我有一个n字节的bytearray。这与其中一个已定义的ctypes.Sturcture相同。我想将此bytearray类型转换为此结构,以便可以访问每个成员。我该如何做到这一点?
class ABC(Structure):
_fields_ = [("a", c_uint), ("b", c_ushort), ("c", c_ushort)]
class DEF(Structure):
_fields_ = [("abc", ABC), ("i", I)]
b = bytearray(b'\x88\x08\xc0\xf9\x02\x85\x10\x00\xcc')
s = DEF()
print(s.abc.a)
如何获取上述 print
语句的正确值?
alignment
函数的解释,原生对齐访问数据类型的原因以及它与默认填充字节添加到DEF
的情况的关系。这样就更清楚地理解了使用_pack_ = 1
的要求。 - Eryk Sun