我试图了解 Visual FoxPro 紧凑索引 (*.IDX) 的文件格式。我目前正在参考Microsoft 的文档以获取指导。
索引是一个 512 字节节点的 B 树。每个叶(“外部”)节点包含多个条目。每个条目由四部分数据组成:
- 行号 [固定长度]
- 重复的字节数(文档没有解释这一点)[固定长度]
- 尾随字节数(文档没有解释这一点)[固定长度]
- 键[可变长度]
条目(没有它们的键)存储在节点的开头,紧跟在节点的 24 字节标头之后。它们的键不包含在此位置,因为键的长度不同,而行号、重复字节数和尾随字节数的长度是固定的。密钥存储在节点的末尾并向后工作。例如:
- 24 字节标头
- 行号、重复字节数、尾随字节数(条目 #1)
- 行号、重复字节数、尾随字节数(条目 #2)
- 行号、重复字节数、尾随字节数(条目 #3)
- ...
- 密钥(条目 #3)
- 密钥(条目 #2)
- 密钥(条目 #1)
如何确定密钥的各个长度?该文档似乎没有指定这一点。它们是完全连续的(没有空字节分隔符)。
我可以通过目视检查手动隔离键。我怀疑尾随字节数代表密钥的长度。但是,它与本次检查确定的长度无关。
我相信 FoxPro 文件格式源自 xBase 标准。也许这敲响了警钟?