Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::convert::TryInto;
- #[derive(Default, Debug, Clone, Copy)]
- #[repr(C, packed)]
- struct Header {
- timestamp_ns: i64,
- message_id: u16,
- message_version: u16,
- sequence_number: u16,
- reserved: [u32;10],
- length_bytes: u16,
- }
- fn main() {
- let mut header = Header::default();
- header.message_id = 4;
- header.length_bytes = 42;
- let bytes: [u8; std::mem::size_of::<Header>()] = unsafe { std::mem::transmute(header) };
- // println!("{:?}", bytes);
- // Now say you only have a byte slice
- let byte_slice: &[u8] = &bytes[..];
- let header_again: &Header = unsafe { std::mem::transmute(byte_slice.as_ptr()) };
- println!("{:?}", header_again);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement