【问题标题】:Placing a new value into a section of a big Python bitarray将新值放入大 Python 位数组的一部分
【发布时间】:2016-09-28 13:10:29
【问题描述】:

使用 Python 2.7 和 bitarray 0.8.1 来保存多个序列化的寄存器值(寄存器可以从 16 到 512 字节长)。 我想为这个位数组的特定部分设置一个值?

例如:

from bitarray import bitarray
BYTE = [False, False,False, False, False, False, False, False]
reg = bitarray(512*BYTE, endian='big')

如何将值 0xaa 设置为 reg 的 2048:2055 位?

【问题讨论】:

    标签: python slice bitmask bitarray


    【解决方案1】:

    使用切片分配。

    bin_of_aa = "{:b}".format(0xaa)
    reg[2048:2055] = bitarray(bin_of_aa,endian="big")
    

    【讨论】:

    • 谢谢!这行得通,似乎我在创建子部分时遇到了问题(例如 bin_of_aa)
    • 是的,我试过 bitarray(0xaa) 得到了奇怪的结果,bitarray(bin(0xaa)) 引发错误,因为 bin 放置了 0b 前缀,另一个可行的是 bitarray(bin(0xaa)[2:]) 切断前缀但使用您喜欢的任何一个。
    • 请注意,reg[2048:2055] 描述了一个长度为 7 的切片,但 bitarray(bin_of_aa,endian="big") 的长度为 8,所以我希望它会引发错误,但它可以工作,所以要小心...
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多