我有各种二进制文件格式,我需要转储为某种文本格式,编辑然后重新编译(可能是二进制格式的稍微不同的版本)。当然,我可以用 C/C++ 编写一堆实用程序代码来做这种事情,并且可能利用库来处理文本方面的事情(XML 或 JSON 或其他),但这是一种不断出现的任务模式在我的工作中,在我看来,可能应该已经存在某种用于此类工作的通用工具。
显然,需要某种方式来描述二进制文件格式——架构或类似的——这将需要支持所有明显的数据类型(字符串、各种大小的整数、布尔值等,浮点数也不错),以及计数字段、长度字段、填充/对齐等内容,以处理您在数据文件中找到的所有典型内容。支持字节序也很有用,因为二进制文件的字节序可能与我们运行的平台不同。
如果这样的东西尚不存在,我会感到非常惊讶,但到目前为止我还没有通过谷歌获得运气(你甚至如何简洁地描述这样的实用程序或库?)。我记得最接近这一点的是苹果在“经典”Mac OS 时代的资源编译器/反编译器实用程序。这些使用类 C 语法,在头文件中使用资源模板定义来描述各种二进制资源的格式,您可以在这种类 C 源语法和二进制资源之间进行编译/反编译。