【发布时间】:2013-10-23 12:19:19
【问题描述】:
如何使用ctypes 获取 32 位 int 的前 11 位?
import ctypes
class Fields(ctypes.Structure):
_pack_ = 1
_fields_ = [('a', ctypes.c_uint, 11)]
class BitField(ctypes.Union):
_pack_ = 1
_fields_ = [('b', Fields),
('raw', ctypes.c_uint)]
bf = BitField()
bf.raw = 0b01010000001000000000000000000001
print('0b{:0>32b}'.format(bf.raw))
print('0b{:0>32b}'.format(bf.b.a))
结果:
0b01010000001000000000000000000001
0b00000000000000000000000000000001
我想要
0b01010000001000000000000000000001 0b000000000000000000000001010000001【问题讨论】:
-
我不清楚你想要什么。第一个输出好吗?我看不出有什么不同。
-
第一行32位数字不变,我只是打印出来供参考。
标签: python ctypes bit-fields