我遇到了ctypes.BigEndianStructure的麻烦。我无法获得我设置为字段的值。我的代码是这样的。
import ctypes
class MyStructure(ctypes.BigEndianStructure):
_pack_ = 1
_fields_ = [
('fx', ctypes.c_uint, 7),
('fy', ctypes.c_ubyte, 1)
]
x = MyStructure()
它打印0作为例外:
print x.fy # Prints 0
然后我为它设置了一个值,但它仍然打印0:
x.fy = 1
print x.fy # Still prints 0
答案 0 :(得分:-1)
我不知道为什么你的行为不起作用,这当然是奇怪的行为。我认为这个替代代码可行。
import ctypes
class MyStructure(ctypes.BigEndianStructure):
_pack_ = 1
def __init__(self):
self.fx=ctypes.c_uint(7)
self.fy = ctypes.c_ubyte(1)
x = MyStructure()
x.fy = 7
print x.fy # prints 7
或没有构造函数::
import ctypes
class MyStructure(ctypes.BigEndianStructure):
_pack_ = 1
fx = ctypes.c_uint(7)
fy = ctypes.c_ubyte(1)
x = MyStructure()
x.fy = 7
print x.fy # prints 7
我个人从未使用过字段属性,所以我无法说出奇怪的行为。