Python ctypes.BigEndianStructure无法存储值

时间:2016-08-08 10:57:53

标签: python structure ctypes

我遇到了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

1 个答案:

答案 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

我个人从未使用过字段属性,所以我无法说出奇怪的行为。