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
posted @ 2022-03-15 17:55  develon  阅读(257)  评论(1编辑  收藏  举报