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