Ich habe Probleme mit ctypes.BigEndianStructure. Ich kann den Wert, den ich auf eins gesetzt habe, nicht auf die Felder bekommen. Mein Code ist so.Python ctypes.BigEndianStructure kann keinen Wert speichern
import ctypes
class MyStructure(ctypes.BigEndianStructure):
_pack_ = 1
_fields_ = [
('fx', ctypes.c_uint, 7),
('fy', ctypes.c_ubyte, 1)
]
x = MyStructure()
Er druckt 0 als ausgenommen:
print x.fy # Prints 0
dann setze ich einen Wert zu, aber er druckt immer noch 0:
x.fy = 1
print x.fy # Still prints 0
Kann nicht reproduziert werden. Ich habe Ihren genauen Code eingefügt und Python 2.7.5 (32-Bit) verwendet. –
Noch wichtiger, sollten Sie die 'ctypes.sizeof (MyStructure)' überprüfen, da es wahrscheinlich nicht das ist, was Sie erwarten. Die aktuelle Definition ist 5 Bytes. Wenn Sie versuchen, ein Byte zu packen, sollten 'fx' und' fy' 'c_ubyte' sein. Mit einem anderen Typ beginnt eine neue Verpackung. –
Funktioniert auch wie in Python 3.3 (64-Bit). Benötigen Sie mehr Details zum Reproduzieren. –