1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#[inline(always)] pub fn _read_be_u16(buf: &[u8], idx: &mut usize) -> u16 { let out: u16 = ((buf[*idx] as u16) << 8) + (buf[*idx+1] as u16); *idx += 2; out } #[inline(always)] pub fn _read_be_i32(buf: &[u8], idx: &mut usize) -> i32 { let out: i32 = ((buf[*idx] as i32) << 24) + ((buf[*idx+1] as i32) << 16) + ((buf[*idx+2] as i32) << 8) + ((buf[*idx+3] as i32)); *idx += 4; out } #[cfg(test)] mod test_hp_support_functions { #[test] fn test_read_be_u16() { for i in 0..65536usize { let b = [((i & 0xFF00) >> 8) as u8, (i & 0x00FF) as u8]; assert_eq!(super::_read_be_u16(&b, &mut 0), i as u16); } } #[test] #[allow(overflowing_literals)] fn test_read_be_i32() { let test_vals = vec!(-2147483648i32,-20000000, -1, 0, 1, 20000000, 2147483647i32); for &i in test_vals.iter() { let b = [((i & 0xFF000000) >> 24) as u8, ((i & 0xFF0000) >> 16) as u8, ((i & 0xFF00) >> 8) as u8, (i & 0x00FF) as u8]; assert_eq!(super::_read_be_i32(&b, &mut 0), i as i32); } } }