问题描述
我遇到了Rust二进制代码库的问题。当它序列化向量时,它始终假定前缀长度为8字节。当您始终使用BINCODE编码数据时,这是一个很好的假设,因为BINCODE可以读取它自己的序列化数据。
我所处的情况是我无法影响序列化程序,因为它不是我编写的,并且由于遗留原因,它必须保持不变。它将其向量编码为带有长度前缀的数组,其中前缀始终为2字节(或者在某些情况下为4字节,但我非常了解这些情况。一旦我知道如何用2字节做这件事,4字节应该不是问题)。
如何使用bincode(和serde)反序列化这些字段?我是否可以解决以二进制代码硬编码的默认8字节长度?推荐答案
Bincode不应与任何现有的序列化程序或标准兼容。根据评论,也不是您尝试阅读的格式。
我建议您获取bincode源代码-它们是麻省理工学院许可的,因此您基本上可以自由地使用它们做任何您喜欢的事情-并根据您的格式对其进行修改(并将其命名并包含在您的项目中)。
serde::Deserializer
和底层data model都有很好的文档记录,而且bincode中的实现很容易找到(在de/mod.rs
中),所以请以它为起点,并根据需要进行调整。