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
pub fn serialize_i64(dest: &mut [u8], mut value: i64) { if dest.len() != 4 { panic!("Slice of length 4 expected"); } if value < 0 { panic!("Only positive i64 supported"); } dest[3] = (value & 0xff) as u8; value >>= 8; dest[2] = (value & 0xff) as u8; value >>= 8; dest[1] = (value & 0xff) as u8; value >>= 8; dest[0] = (value & 0xff) as u8; } #[cfg(test)] mod tests { use super::*; #[test] fn test_serialize_i64() { let mut arr = [0u8; 8]; serialize_i64(&mut arr[2..6], 0x01020304); assert_eq!(arr, [0, 0, 1, 2, 3, 4, 0, 0]); } }