#[inline]
pub fn slice_to_be48(v: &[u8]) -> u64 {
((v[0] as u64) << (8 * 5))
| ((v[1] as u64) << (8 * 4))
| ((v[2] as u64) << (8 * 3))
| ((v[3] as u64) << (8 * 2))
| ((v[4] as u64) << 8)
| (v[5] as u64)
}
#[inline]
pub fn be48_to_array(u: u64) -> [u8; 6] {
assert!(u & 0xffff_0000_0000_0000 == 0);
let mut v = [0; 6];
v[0] = ((u >> (8 * 5)) & 0xff) as u8;
v[1] = ((u >> (8 * 4)) & 0xff) as u8;
v[2] = ((u >> (8 * 3)) & 0xff) as u8;
v[3] = ((u >> (8 * 2)) & 0xff) as u8;
v[4] = ((u >> 8) & 0xff) as u8;
v[5] = (u & 0xff) as u8;
v
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_all() {
assert_eq!(
slice_to_be48(&[0xde, 0xad, 0xbe, 0xef, 0x1b, 0xad]),
0xdeadbeef1bad
);
assert_eq!(
be48_to_array(0xdeadbeef1bad),
[0xde, 0xad, 0xbe, 0xef, 0x1b, 0xad]
);
}
}