1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
use std::io::Read; use crate::error::TychoResult; use crate::read::func::read_byte; pub(crate) fn read_length<R: Read>(reader: &mut R) -> TychoResult<usize> { let mut number: u64 = 0; let mut count = 0; loop { let byte = read_byte(reader)?; number |= ((byte & 0x7F) as u64) << (7 * count); if byte & 0x80 == 0 { return Ok(number as usize); } count += 1; } }