bincode 2.0.0-rc.3中encode_into_slice写入字节数异常求助
问题:bincode 2.0.0-rc.3 序列化结构体时字节数与实际大小不符
我正在使用bincode crate的不稳定版本2.0.0-rc.3对结构体进行二进制序列化与反序列化,目标是实现类似C语言无填充结构体的memcpy到缓冲区操作。但在big endian格式下执行encode_into_slice时,写入[u8]缓冲区的字节数与结构体总大小不符:结构体实际大小为10字节,但字段值较小时,processed_len输出为9;字段值较大时,有时输出为11。
相关Rust代码:
use bincode::{Decode, Encode}; use serde::{Serialize, Deserialize}; #[derive(Default, Deserialize, Serialize, Decode, Encode, Debug)] #[repr(C)] // size of struct is 10 pub struct Data { pub u: u16, pub f: f64, } fn main() { let data = Data { u: 1111u16, f: 1111.0, }; let mut buff = [0u8; 16]; if let Ok(processed_len) = bincode::encode_into_slice(&data, &mut buff, bincode::config::standard().with_big_endian()) { // prints value of 9 for smaller field values and sometimes 11 for larger field values println!("{}", processed_len); } }
Cargo.toml配置:
[dependencies] bincode = "2.0.0-rc.3" serde = { version = "1.0.195", features = ["derive"] }
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

