我想使用Python3 ctypes位字段构造一个无符号32位int,如下所示:
c_uint = ctypes.c_uint32
class Flags_bits(ctypes.LittleEndianStructure):
_fields_ = [
("a", c_uint, 4),
("b", c_uint, 4),
("c", c_uint, 4),
("d", c_uint, 4),
("e", c_uint, 4),
("f", c_uint, 4),
("g", c_uint, 4),
("h", c_uint, 4)]
当我用特定的整数值替换Flags_bits
时,
aa = Flags_bits(1,2,3,4,5,6,7,8)
print(hexlify(aa).decode('utf-8'))
输出为
21436587
我希望有这样的结果
87654321 # binary of 1000 0111 0110 0101 0100 0011 0010 0001
因为Little endian从低位开始构造位.如何获得预期的输出?我做错什么了吗?有人能帮我吗?提前感谢!