Rustでstructなどのメモリ上のバイナリ表現を見たい
やりたいこと
structとかenumとかがメモリ上でどのように表現されるか(Data Layout的な)ものを調べるコード。
例
code:rs
unsafe fn any_as_u8_slice<T: Sized>(p: &T) -> &u8 { ::std::slice::from_raw_parts(
(p as *const T) as *const u8,
::std::mem::size_of::<T>(),
)
}
struct MyStruct {
id: u8,
num: u8,
}
fn main() {
let my_struct = MyStruct { id: 3, num: 5 };
let bytes: &u8 = unsafe { any_as_u8_slice(&my_struct) }; println!("{:?}", bytes);
}
code:出力
以前どこかで
以前どこかで、structとかのバイナリ表現を見る方法が、それを目的として記事タイトルではなかったが見かけた気がしていて、本当はそれを探したかった。