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