Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #[derive(Debug)]
  2. #[repr(C)]
  3. struct Header {
  4. timestamp_ns: i64,
  5. message_id: u16,
  6. message_version: u16,
  7. sequence_number: u16,
  8. reserved: [u8; 4],
  9. length_bytes: u16,
  10. // padding
  11. }
  12.  
  13. fn main() {
  14. let data: &[u8] = &[
  15. 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // timestamp
  16. 0x00, 0x00, // IMU Message ID
  17. 0x00, 0x00, // Message version
  18. 0x00, 0x00, // Sequence number
  19. 0x00, 0x00, 0x00, 0x00, // reserved
  20. 0x01, 0x00,
  21.  
  22. ];
  23.  
  24. let mut target: std::mem::MaybeUninit<Header> = std::mem::MaybeUninit::uninit();
  25.  
  26. let mut target_ptr = target.as_mut_ptr() as *mut u8;
  27. unsafe { std::ptr::copy_nonoverlapping(data.as_ptr(), target_ptr, 20) };
  28.  
  29.  
  30. let header = unsafe { target.assume_init() };
  31.  
  32. println!("{:?}", header);
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement