Rust bincode
bincode
fn bin<T>(p: &T) {
bin2(p, std::mem::size_of_val(p) as i8);
}
fn bin2<T>(p: *const T, le: i8) {
let p = p as *const u8;
println!("show {:p}, count: {}", p, le);
unsafe {
for i in 0..le {
let a = p.offset(i as isize);
print!("{:02X} ", *a);
}
println!();
}
}
/// p的内容是另一个指针,对p解引用后再查询
fn bin_ref<T>(p: *const T, le: i8) {
let p = p as *const *const u8;
let p = unsafe { *p };
bin2(p, le);
}
usage:
fn main() {
let a = vec![0x88u16, 0x77, 0x66];
bin(&a);
bin2(&a, 32);
bin_ref(&a, 32);
}
show 0x78948ff8d0, count: 24
90 DD 95 49 AD 01 00 00 03 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00
show 0x78948ff8d0, count: 32
90 DD 95 49 AD 01 00 00 03 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 FE FF FF FF FF FF FF FF
show 0x1ad4995dd90, count: 32
88 00 77 00 66 00 00 00 50 01 95 49 AD 01 00 00 69 00 6E 00 2D 00 63 00 68 27 73 84 C5 09 00 00