我有各种二进制文件格式,我需要将其转储为某种文本格式,编辑然后重新编译(可能是二进制格式的稍微不同的版本)。当然我可以用 C/C++ 编写一堆实用程序代码来做这种事情,并且可能利用一个库来处理文本方面的事情(XML 或 JSON 或其他),但这是一个不断出现的任务模式在我的工作中,在我看来,可能应该已经存在某种用于此类工作的通用工具。
显然需要某种方式来描述二进制文件格式 - 模式或类似的方式 - 这需要支持所有明显的数据类型(字符串、各种大小的整数、 bool 值等, float 会很好也),以及计数字段、长度字段、填充/对齐等内容,以处理您在数据文件中找到的所有典型内容。支持字节顺序也很有用,因为二进制文件的字节顺序可能与我们运行的平台不同。
如果这样的东西还不存在,我会感到非常惊讶,但到目前为止,我还没有通过谷歌运气(你如何简洁地描述这样的实用程序或库?)。我记得见过的与此最接近的东西是 Apple 在“经典”Mac OS 时代的资源编译器/反编译器实用程序。它们使用类 C 语法,在头文件中使用资源模板定义来描述各种二进制资源的格式,您可以在这种类 C 源语法和二进制资源之间进行编译/反编译。
最佳答案
BinX ,二进制 XML 描述语言,加上相应的库,似乎符合您的目的。
也可能感兴趣 Chapter 24. Practical: Parsing Binary Files的 Practical Common Lisp这本书演示了如何在 150 行 Lisp 代码中编写用于解析(二进制)MP3 文件中的 ID3 标签的库。 *
* 如今,我可能不会使用 Lisp,而是更现代的函数式语言,如 Clojure .见Reading binary data in Clojure举个例子。
附言binary data library
或 binary data file library
是 Google 的好关键字。
关于compiler-construction - 用于编译/反编译二进制数据文件的通用实用程序或库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146192/