Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[derive(Debug)]
- #[repr(C)]
- struct Header {
- timestamp_ns: i64,
- message_id: u16,
- message_version: u16,
- sequence_number: u16,
- reserved: [u8; 4],
- length_bytes: u16,
- // padding
- }
- fn main() {
- let data: &[u8] = &[
- 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // timestamp
- 0x00, 0x00, // IMU Message ID
- 0x00, 0x00, // Message version
- 0x00, 0x00, // Sequence number
- 0x00, 0x00, 0x00, 0x00, // reserved
- 0x01, 0x00,
- ];
- let mut target: std::mem::MaybeUninit<Header> = std::mem::MaybeUninit::uninit();
- let mut target_ptr = target.as_mut_ptr() as *mut u8;
- unsafe { std::ptr::copy_nonoverlapping(data.as_ptr(), target_ptr, 20) };
- let header = unsafe { target.assume_init() };
- println!("{:?}", header);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement