1

这是我的第一篇文章,可能是一个幼稚的问题,但我无法在互联网上找到我想知道的内容。

我想从固件文件中提取文件,并希望保留与这些文件相关的各种类型的信息,例如文件名/标题/文件正文/某些部分/偏移量等,它们是二进制和文本数据的混合类型,还有所有文件都是与其他文件属性(例如某些部分/偏移量/部分偏移量等)相互关联的属性。某些文件属性信息取决于其他文件属性信息,因此我不知道通过顺序读取和处理每个文件来完成此过程的任何设计或同时 :(

我已经尝试创建一些类来保存这些信息,但我想知道进行这种文件处理的标准是什么。如果有人请提供一些建议/链接/文档或c++中的示例代码,这将非常棒。

4

1 回答 1

0

这是一个难题,因为它非常普遍。最优策略在很大程度上取决于数据的性质、数据的结构以及您打算用它做什么。

一次只读取一条数据并在进行时将其组装到正确的内存结构中,这从根本上来说并没有错。当然,大量的小读取可能会很慢,并且读取的结构会被纯粹的大量代码所掩盖。

为磁盘上的每个内聚数据位定义一个纯数据对象(即structc 中的 a 或 astructclass没有 c++ 中的方法)并一次性将它们吸入会更快,更容易理解,但是您必须处理获取内存中的打包和匹配的字节序(我知道你说你正在阅读你写的同一台机器,但仍然如此)。但是,这不是很“面向对象”。

或者,您可以定义一堆知道如何从磁盘中吸取内容的类。不错且面向对象,虽然代码可能会掩盖读取的逻辑,但它会以小块的形式进行读取,而对象文档占据了大部分时间。

无穷无尽的变化是可能的。

于 2011-11-18T02:38:34.437 回答