有一些很棒的库用于反序列化二进制格式。我非常喜欢使用Rust的kaitai和nom's approach的声明式方法。
但是,我不知道序列化二进制格式的任何好方法。
例如,您经常遇到必须将消息长度写入消息头的情况,但实际上您此时并不知道确切的消息长度,因为它取决于标题下游的许多字段。而且你有时也必须处理填充对齐,这可能很麻烦。
你知道这些问题的解决方案吗?
答案 0 :(得分:0)
请看一下多年前解决了这个问题的ASN.1,并且仍然在许多不同行业的关键基础设施中继续广泛使用。它独立于编程语言和机器体系结构,因此您可以设置通信,一个对等端是在小端机器上使用C而另一个是在大端机器上使用Java还是C#。 ASN.1的高质量工具很容易实现结构填充问题。 ITU-T ASN.1项目的ASN.1 Tools页面提供了一个很好的工具清单(免费和商业)。