我有 .dat 文件,我正在尝试用 python 读取它。文件格式为:
1.1 CDR description1
Field length(bytes) Offset
x 4 0
x1 2 4
x2 1 6
x3 1 7
......
......
......
x4 16 210
x5 4 226
x6 70 230
Total length of information 300
这些是 CDR 记录,我正在尝试使用 struct
模块进行读取,但我无法理解如何将其与我的特定文件格式一起使用...有帮助吗?
最佳答案
您需要知道每个字段中存储了哪些类型信息,struct
模块才能理解每个字段。
例如,偏移量 0 处的第一个字段长 4 个字节,这意味着它可以是 int
(范围从 -2,147,483,648 到 +2,147,483,647),也可以是 unsigned int
相反(范围从 0 到 4,294,967,295)。它也可以是单精度 float 。
您可能还需要找出 endianness您的文件格式。如果没有明确命名,您需要进行一些实验,或者从上下文推断它是什么(例如,Windows 文件格式几乎总是小端)。
如果您只想解压前 4 个值,则读取正确的字节数(格式为 8)并将其与一组格式字符一起传递给 struct.unpack 函数告诉结构体期望什么类型。如果我们假设小端数据,并且前四个字段分别表示一个无符号整型、一个无符号短整型和两个无符号字符,则您可以使用:
with open('something.cdr', 'rb') as data:
x, x1, x2, x3 = struct.unpack('<IH2B', data.read(8))
关于Python - 读取/解析二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647306/