1
8
你可以试着雇用 Boost.Spirit (V2)最近 binary parsing tools ,注意结尾 native 和 mixed parsers
更新:我发现了类似的问题,Joel de Guzman在他的答案中确认了二进制解析器的可用性: Can Boost Spirit be used to parse byte stream data? |
2
10
Kaitai Struct 最近出现了一个解决这个问题的方案:从规范生成二进制解析器。您可以提供一个基于yaml/json格式的任意数据结构序列化方案,如下所示:
使用编译它
或者在Java中:
添加到项目后,它提供了一个非常直观的API(比如Java中的一个例子,但是它们支持更多的语言):
它支持不同的词尾、条件结构、子结构等等。相当复杂的数据结构,例如 PNG image file format 或 PE executable 可以解析。 |
3
2
这个 Construct 用Python编写的解析器在这个领域做了一些有趣的工作。 该项目有许多作者和停滞期,但截至2017年,似乎再次活跃起来。 |
4
1
阅读ASN.1。如果您可以用它的术语描述二进制数据,那么您可以使用各种可用的工具包。不适合胆小的人。 |
5
1
|
6
0
当然,没有什么能阻止您像处理文本解析器一样,为二进制数据编写一个递归的合适的解析器。如果您需要阅读的格式不太复杂,这是一种合理的继续阅读的方法。 当然,如果你的格式是 非常 很简单,你可以看看 Reading binary file defined by a struct 以及类似的问题。 我不知道任何非文本输入的解析器生成器,尽管它们也是可能的。 如果您不熟悉手工编写的代码解析器,那么规范的问题是 Learning to write a compiler .这个 Crenshaw tutorial (和) in PDF )是一个快速阅读。 |
7
0
另请参见Google协议缓冲区。 |
8
0
有一个叫做binpac的工具可以做到这一点。 http://www.icsi.berkeley.edu/pubs/networking/binpacIMC06.pdf |
user8040474 · 网络连接不工作 6 年前 |
Genhain · swift中链式泛型类型推断闭包 6 年前 |
Joe · 将数据从子VC传回集合视图单元格 6 年前 |
NaderBesada · 协议字典Swift 4 6 年前 |
Marmelador · 通过协议更改代理的属性 6 年前 |