【发布时间】:2015-12-09 08:39:47
【问题描述】:
我有一个像 0x5423 这样的数字,我想从中提取 4 个值:
a = 0x5 # 15 downto 12
b = 0x42 # 11 downto 3
c = 0x3 # 3 downto 2
d = 0x00 # 1 downto 0
我发现了看起来很棒的模块bitstrings。不幸的是,由于未知原因,这些位从右开始编号。
这很糟糕,因为如果添加一些像 0xA5423 这样的高位,我的提取将不再起作用:
field = bitstrings.BitArray('0x5423')
a = field[0:4].uint
b = field[4:12].uint
c = field[12:14].uint
d = field[14:16].uint
如何在没有复杂算术操作的情况下正确提取我的位域,例如:
b = (a >> 4) & 0xFF
理想情况下我会:
b = field.range(11, 4)
【问题讨论】:
标签: python bits bit-fields