From 67787c3399358237683d1a093aa12087f2a92f14 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Fri, 26 Jun 2020 00:41:07 +0800 Subject: [PATCH] update fbs --- flatbuffers/README.md | 6 ++++++ flatbuffers/src/main.rs | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/flatbuffers/README.md b/flatbuffers/README.md index c4370ee..289b21c 100644 --- a/flatbuffers/README.md +++ b/flatbuffers/README.md @@ -31,5 +31,11 @@ https://cmake.org/install/ ``` +---- + +FlatBuffers Binary Format + +* https://qiita.com/termoshtt/items/c337cd67e678bac2c795#flatbuffers-binary-format +* https://github.com/dvidelabs/flatcc/blob/master/doc/binary-format.md diff --git a/flatbuffers/src/main.rs b/flatbuffers/src/main.rs index 24c489f..6f77514 100644 --- a/flatbuffers/src/main.rs +++ b/flatbuffers/src/main.rs @@ -27,4 +27,20 @@ fn main() { let monster_2 = flatbuffers::get_root::(&buff); println!("Monster hp: {}", monster_2.hp()); println!("Monster name: {:?}", monster_2.name()); + + let offset_to_body = i32::from_le_bytes(get_4bytes(&buff)); + println!("Offset to body : {:>4}, hex: {}", offset_to_body, hex::encode(&get_4bytes(&buff))); + let xx = &buff[4..offset_to_body as usize]; + println!("{}", hex::encode(xx)); + let offset_to_vtable = i32::from_le_bytes(get_4bytes(&buff[offset_to_body as usize..])); + println!("Offset to vtable: {:>4}, hex: {}", offset_to_vtable, hex::encode(get_4bytes(&buff[offset_to_body as usize..]))); +} + +fn get_4bytes(buff: &[u8]) -> [u8; 4] { + let mut ret = [0_u8; 4]; + ret[0] = buff[0]; + ret[1] = buff[1]; + ret[2] = buff[2]; + ret[3] = buff[3]; + ret }