1

我正在尝试读取包含目录和文件条目的存档文件。我已经设法读出文件的标题并获取信息。

您可以在此处找到有关格式的信息

现在该文件包含一个目录模块,从文件源开始 2048 个字节后开始。

我所知道的是 TOC 可以包含两件事:

遵循以下结构的目录条目:

  • 4bytes :int32 : 存储条目名称的名称偏移量
  • 4bytes : int32 : Information flags , 4 个字节的每一位都包含关于某事的信息
  • 4bytes : Uint32 : 内容入口索引
  • 4bytes : uint32 : 内容条目计数

文件条目遵循以下结构:

  • 4bytes : int32 : 名称偏移量
  • 4字节:int32:文件大小
  • 3bytes : Uint24 : 文件存储位置的偏移量
  • 1byte : Uchar8 : 资源类型
  • 4byte : uint32 : 信息标志

现在这对于每个目录条目或文件条目都是一样的。

问题是我不知道目录中的第一个或每个条目的顺序是什么,这是未知的。

我所知道的是文件头,是条目数,有多少条目和目录大小。

无论如何用二进制阅读器找出我需要阅读每个条目的形式或找出它是什么特定类型的条目?

我将为此使用 for 循环,因为我知道标题中的条目数。

感谢任何帮助

4

1 回答 1

1

好吧,二进制阅读器无法确定它自己读取的数据类型。它只是读取一个字节序列。你是那个应该解释这些字节的人。如果您不知道用于编写源文件的协议,那么最好的办法是尝试通过反复试验来弄清楚它,并进行有根据的猜测。您可以假设目录条目首先出现,您可以假设文件条目在第一个目录条目的第一个内容索引之后开始。等等然后你应该运行你的应用程序,看看这些猜测是否有意义。

如果一开始没有协议,并且初始数据是按随机顺序写入的 - 那么就无法区分条目与您所拥有的信息。

于 2013-08-14T09:52:13.330 回答