读复杂的二进制文件格式

时间:2011-04-25 00:33:46

标签: c file-structure

是否有任何书籍或教程可以让我学习如何阅读具有复杂结构的二进制文件。我做了很多尝试来制作一个必须读取复杂文件格式并将其保存在结构中的程序。但它总是失败,因为堆溢出等导致程序崩溃。

3 个答案:

答案 0 :(得分:3)

可能你最好的办法是寻找二进制网络协议而不是文件格式的信息。主要问题(字节顺序,结构打包,序列化和反序列化指针,......)是相同的,但网络人员往往更加意识到问题,并更明确地处理它们。从线上读取或写入二进制blob与在磁盘上处理二进制blob并没有太大的不同。

您还可以在开源图形包中找到许多现有示例(例如netpbmThe Gimp)。开源办公软件包(例如LibreOffice)也会为您提供大量处理复杂和复杂二进制格式的示例代码。

Google's Protocol Buffers或老式的ONC RPC和XDR中甚至可能会有一些用处。

我不知道这些东西的任何书籍或手册,但也许一些现实生活中的工作例子比HOWTO指南更有用。

答案 1 :(得分:0)

调试内存访问问题的最佳工具之一是valgrind。我下次试一试。至于书籍,您需要更具体地说明要解析的格式。有很多格式,其中许多格式彼此截然不同。

答案 2 :(得分:0)

结帐Flavor。它允许您使用类似C的结构指定格式,并将为C ++或Java中的数据自动生成解析器。