3

我有各种二进制文件格式,我需要转储为某种文本格式,编辑然后重新编译(可能是二进制格式的稍微不同的版本)。当然,我可以用 C/C++ 编写一堆实用程序代码来做这种事情,并且可能利用库来处理文本方面的事情(XML 或 JSON 或其他),但这是一种不断出现的任务模式在我的工作中,在我看来,可能应该已经存在某种用于此类工作的通用工具。

显然,需要某种方式来描述二进制文件格式——架构或类似的——这将需要支持所有明显的数据类型(字符串、各种大小的整数、布尔值等,浮点数也不错),以及计数字段、长度字段、填充/对齐等内容,以处理您在数据文件中找到的所有典型内容。支持字节序也很有用,因为二进制文件的字节序可能与我们运行的平台不同。

如果这样的东西尚不存在,我会感到非常惊讶,但到目前为止我还没有通过谷歌获得运气(你甚至如何简洁地描述这样的实用程序或库?)。我记得最接近这一点的是苹果在“经典”Mac OS 时代的资源编译器/反编译器实用程序。这些使用类 C 语法,在头文件中使用资源模板定义来描述各种二进制资源的格式,您可以在这种类 C 源语法和二进制资源之间进行编译/反编译。

4

2 回答 2

5

BinX,二进制 XML 描述语言,加上相应的库,似乎符合您的目的。

同样有趣的可能是第 24 章。实用:解析二进制文件实用通用 Lisp书,它演示了如何编写一个库,用于在150 行Lisp 代码中解析(二进制)MP3 文件中的 ID3 标记。*

* 现在,我可能不会使用 Lisp,而是使用更现代的函数式语言,例如Clojure。有关示例,请参阅在 Clojure 中读取二进制数据。

PS binary data libraryorbinary data file library是谷歌的好关键字。

于 2010-01-27T14:16:46.760 回答
2

Mac App Store 中的“SynalyzeIt”可能值得一看……

于 2011-07-09T13:29:43.787 回答