【发布时间】:2015-07-06 15:17:27
【问题描述】:
我正在解析一个 unicode/十六进制文件,该文件基本上包含一系列我感兴趣的“条目”。在这些条目之前将是以下模式:
0x 00 00 00 <LENGTH> 00 00
其中 是后面条目的长度(以字节为单位)。因此,例如,前面带有 this 的条目:
0x 00 00 00 48 00 00 ..........
接下来的 72 个字节(0x48 转换为十进制)将是我关心的 unicode 条目。
简单地说,我想不出解析这种结构的文件的最佳方法。普通文本文件我只会使用 .split() 以特定模式拆分每个条目,但在这种情况下,每个 都会不同,我不知道这是否是最好的方法。
我正在考虑使用一个函数,该函数采用十六进制输入(整个文件)、开始位置和结束位置,在遍历并获取每个条目的偏移量后获取每个条目,尽管我觉得可能有一个更有效的方式来做到这一点。
我想在我开始破解它之前我会得到一些输入。有什么想法吗?
编辑:有关文件结构的更多信息。它是大端的,我正在寻找的模式实际上是这个,尽管由于某种原因,只有第一个条目不遵循这种模式(特殊情况,我可以稍后处理):
0x 00 00 00 48 00 00 .........
其中 0x 48 是以下条目的大小。所以有两个字节的填充,然后是两个字节的大小,然后是两个字节的填充,然后是条目。正如我所说,由于某种原因,第一个条目没有相同的填充,但我可以稍后处理。每个其他条目在大小之前/之后都有相同的填充。
【问题讨论】:
-
嗯。
00 00 00 ....看起来不像是 Unicode。您需要知道有多少 字节 代表每个 Unicode 字符(通常为 2 个,但最多可能为 4 个)以及它们以何种字节顺序出现。 -
你是对的。我编辑了更多信息。它是大端的,上面对大小之前/之后的填充进行了更好的描述。谢谢!
-
不清楚文件中的实际内容是什么。更新您的问题并包括
print(repr(open('your_file', 'rb').read(2+2+0x48)))是什么?
标签: python parsing unicode hex