jon*_*han 3 rust deserialization serde
我的 Rust bincode 库有问题。当它序列化一个向量时,它总是假设前缀长度是 8 个字节。当您始终使用 bincode 编码数据时,这是一个很好的假设,因为 bincode 可以读取它自己的序列化数据。
我所处的情况是我无法影响序列化器,因为它不是我编写的,并且由于遗留原因它必须保持不变。它将其向量编码为长度前缀数组,其中前缀始终为 2 个字节(或者在某些情况下为 4 个字节,但我很了解这些情况。一旦我知道如何使用 2 个字节进行操作,4 个字节就不应该是问题)。
如何使用 bincode(以及 serde)来反序列化这些字段?我可以解决 bincode 中硬编码的默认 8 字节长度吗?
Bincode不应该与任何现有的序列化器或标准兼容。根据评论,您尝试阅读的格式也不是。
\n\n我建议你获取二进制代码源\xe2\x80\x94它们是麻省理工学院许可的,所以你基本上可以自由地对它们做任何你想做的事情\xe2\x80\x94并修改它们以适合你的格式(并给它你的名字并包括它在你的项目中)。
\n\nserde::Deserializer和底层数据模型一样,都有很好的文档记录,并且 bincode 中的实现很容易找到(在de/mod.rs),因此将其作为您的起点并根据需要进行调整。
| 归档时间: |
|
| 查看次数: |
2235 次 |
| 最近记录: |