You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:59:55