Python通用缓冲区数据类型访问

时间:2013-04-18 21:30:05

标签: python arrays polymorphism byte bits

在Python中,是否有任何现有的基于库的方法可以将缓冲区多态地视为任何数据类型的数组 - 包括位,字节,WORD,DWORD等 - 而无需复制缓冲区?我有一个应用程序,我希望能够将流中的任意位数范围设置为任何无符号值。

例如,如果缓冲区以字节为[0x01, 0x02, 0x03, 0x04, 0x05, 0x06 ...]并且我想将绝对小端位27:11设置为无符号小端值54321,则缓冲区以字节为单位变为[0x01, 0x8A, 0xA1, 0x06, 0x05, 0x06 ...] 。读取 - 修改 - 写入字节的低级细节应该被抽象出来。然后我可能希望将数据的WORD(uint16)视图设置为[0x8A01, 0x06A1, 0x0605, ...]并以这种方式更改某些元素。

是否有任何优秀的公共Python库提供此功能?

1 个答案:

答案 0 :(得分:0)

哦,你的意思是类型是可变的吗?

好的列表是可变的,为什么不使用那些呢?

但是如果你真的想使用比特,这是一个例子 http://wiki.python.org/moin/BitArrays

它使用BitArrays - 您应该能够从示例中找出所有内容。

[编辑]: 在任何地方插入位:

import array
a=array.array('I')
a.append(5) #adds 1 element

a.extend([2,3,3,4,5,5,4]) #adds another 7 elements

a[3:6] = [6,6,6] #replaces 3 elements with the 3 6s

这就是你需要的全部吗?