如何在二进制文件的不同记录之间添加分隔符?

虔诚的迪克西特

我有以下 struct

struct Employee {
    id: u64,
    name: String,
}

我正在使用以下代码对其进行序列化,然后将序列化的字节数组写入文件:

let emp = Employee {
    id: 1546,
    name: "abcd".to_string(),
};

let mut file = OpenOptions::new()
    .read(true)
    .write(true)
    .create(true)
    .open("hello.txt")
    .unwrap();

let initial_buf = &bincode::serialize(&emp).unwrap();

println!("Initial Buf: {:?}", initial_buf);

file.write(&initial_buf);
file.write(&[b'\n']);
file.flush();

file.seek(SeekFrom::Start(0)).unwrap();

let mut final_buf: Vec<u8> = Vec::new();

let mut reader = BufReader::new(file);

reader.read_until(b'\n', &mut final_buf).unwrap();

println!("Final Buf: {:?}", final_buf);

我得到以下输出:

Initial Buf: [10, 6, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100]
Final Buf: [10]
托尔奈

Bincode的约定是,您给它一个要序列化的值,并且给您返回字节。合同不保证您返回的字节不能包含换行符。

在您的数据中,整数1546为0x60A,表示为字节[10, 6, 0, 0]

您应该可以使用Bincode数据而无需任何分隔符。bincode::deserialize_from功能将知道在哪里停止阅读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从分隔符分割二进制数据

iOS)如何在tabbarItems之间添加分隔线(==分隔符)

如何在asp.net的数据列表之间添加分隔符?

如何在自定义Xamarin.Forms ViewCell的行之间添加分隔符?

如何在警告消息中的元素之间添加分隔符?

在R flextable中,如何在列标题之间添加分隔符

Spark-找不到分隔符,如何在行尾添加分隔符?

在 Python 中的二进制数中添加下划线作为分隔符

为 VS 构建时,如何在调试和发布之间在 CMake 中指定不同的二进制文件

如何在Clockpicker中的时间和子午线(AM?PM)之间添加分隔符?

如何在{{#each}}循环中的元素之间添加分隔符,除了最后一个元素之后?

了解二进制字符串分隔符

在特殊的SQL内容之间添加分隔符

二进制文件如何“二进制”?

Python - 如何在 CSV 输出中添加分隔符并删除换行符?

如何使用 foreach 循环在列表中的短语之间添加分隔符?

在 Linux 中拆分平面文件并添加分隔符

在 txt 文件 python 中添加分隔符

十六进制或二进制数字中的数字之前是否允许使用数字分隔符?

Git:“二进制文件不同”。如何在gitHub中解决此问题?

如何在来自xquery中重复字段的多个值之间附加分隔符

如何在Azure Functions中添加和执行二进制文件?

如何在recyclerview中的特定位置添加分隔符?

如何在抽屉中添加分隔符和字幕

Flutter-如何在BottomNavigationBar上添加分隔符?

如何在值更改时向 javascript 对象添加分隔符?

在此示例中,如何在SQL的结果xquery中添加分隔符?

如何在Jinja2中添加分隔符

如何在 D3 条形图中添加分隔符