我正在研究正式指定各种二进制流格式的方法,并使用工具检查流是否符合规范。类似于 XSD+任何 XML 验证工具。或者就像在二进制级别上工作的极其复杂的 grep 表达式(最好不是 - 这真的很难阅读)。
有人知道有用的规范/工具吗?
[理由:我们每天都会收到许多第三方生成的二进制文件,并且很多时候他们使用不良工具来生成无效文件。我们想给他们一个可以用作验证器的工具,并且我们不想为每种格式编写特定的工具。]
如果您认为 Java 的 .class 文件文档是规范的一个很好的示例,请重新考虑查看 Preon。前子是完全捕获它 http://fisheye3.atlassian.com/browse/preon/trunk/preon-samples/preon-sample-bytecode/src/main/java/nl/flotsam/preon/sample/bytecode/ClassFile.java?r=52,并生成类似的文档this http://preon.flotsam.nl/classfile.html.
实际上还有一些其他举措可以捕获二进制编码文件的“语法”。 ASN.1 很有用,但如果您打算捕获(例如)Java 类文件,它不会给您带来很大帮助。 BSDL、Flavor、BFlavor 和其他一些计划也是如此。问题是:有一百万种方法来编码二进制数据,有很多二进制压缩技术,我认为这意味着将会有never是完全捕获它的东西,除非语言本身是可扩展的。
谷歌协议缓冲区基本上也有同样的问题。它定义了类似 Corba 的 CDR 的东西,只要您不需要更高级的东西,它就很好。 Google 协议缓冲区不允许您捕获 Java 的类文件格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)