【发布时间】:2015-08-20 22:05:47
【问题描述】:
我想读取64位数据中的位放入Register类的相应位域中,我不想使用位数组模块,python中有没有传统的方法来实现这一点。
我研究了这个主题,我得到了以下链接 - [1]:How to read bits from a file? [位字段读取链接][1] 但它没有帮助,示例代码 sn-p 非常感谢。提前致谢.
class Register(object):
def __init__(self, x):
self.BitField7= 0
self.BitField6= 0
self.BitField5= 0
self.BitField4= 0
self.BitField3= 0
self.BitField2= 0
self.BitField1= 0
self.fieldwidths = (6,12,6,4,12,8,16)
self.field_names=["BitField1","BitField2","BitField3","BitField4","BitField5","BitField6","BitField7"]
obj= Register('0b11011101110111011101110111011101110011001100110011001100110011001011101110111011101110111011101110101010101010101010101010101010') # input is 0xAAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD
print obj # should print 0xAAAAAAAABBBBBBBB
提前致谢
【问题讨论】:
-
通常您会定义一个通用寄存器类,然后为每个寄存器定义子类或实例中的不同值。这似乎被硬编码为一组特定的值。你到底想完成什么?
-
@Patrick Maupin 我想要基于我想要分割输入的输入,因为我已经知道 feildwidths 例如:input/self.fieldwidths = (6,12,6,4,12,8,16 ), 切片后我想把它放到相应的位域中
-
您的字段是 MSB 在前还是 LSB 在前?为什么你希望按那个顺序打印? AAAA 在您号码的底部...
-
@Patrick Maupin 字段顺序是 LSB 在 MSB 之前,AAAA 在数字的 MSB 之前。期待您的宝贵回复
-
您能给我们举个例子,说明您输入的 BitFields 的值应该是什么?
标签: python bit-manipulation byte bit