首页 > 解决方案 > 将二进制数据解析为多个 ctypes 结构

问题描述

所以我确实有一个二进制文件,我想解析它。在这个文件中,我有一个标题,标题定义了文件其余部分的结构。

例如,文件看起来像这样(作为模型):

版本号 = 001

File_Type = 配置

Number_of_struct_A = 4

Number_of_struct_B = 3

struct_A

struct_A

struct_A

struct_A

struct_B

struct_B

struct_B

到目前为止,我能够读取文件中的第一个结构,如下例所示: Parsing binary data into ctypes Structure object via readinto()

因此,例如,我将有以下类型的结构:

class FileInfo(Structure):
    _fields_ = [("Versions_Nr", c_byte),
                ("File_Typ", c_byte),
                ("Number_of_struct_A", c_byte),
                ("Number_of_struct_B", c_byte)]

class Struct_A(Structure):
    _fields_ = [("A", c_byte),
                ("B", c_byte),
                ]

class Struct_B(Structure):
    _fields_ = [("C", c_byte),
                ("D", c_byte),
                ]

#read in my file
file = open('test.cfg', 'rb')
header = FileInfo()
file.readinto(header)

print(header.Number_of_struct_A)

所以这会给我标题,但我不知道应该如何保存文件中的数据,以便我可以使用我刚刚获得的有关结构数量的信息。或者就此而言,如何存储数据,因为一遍又一遍地读取文件似乎不是一个好的选择。

我希望我的问题是可以理解的。

标签: pythonbinaryctypes

解决方案


推荐阅读