我正在尝试在 Python 3.x 中将位字符串转换为字节字符串。在每个字节中,位是从高位到低位填充的。如有必要,最后一个字节用零填充。位字符串最初存储为布尔值或整数(0 或 1)的“集合”,我想返回 0-255 范围内的整数“集合”。我所说的集合是指列表或类似的对象,而不是字符串:例如,下面的函数返回一个生成器。
到目前为止,我能得到的最快速度如下:
def bitsToBytes(a):
s = i = 0
for x in a:
s += s + x
i += 1
if i == 8:
yield s
s = i = 0
if i > 0:
yield s << (8 - i)
我尝试了几种替代方法:使用枚举、构建列表而不是生成器、通过“(s
不过,我想知道是否有更快的解决方案。特别是,是否有一个库例程可以更快地完成工作,最好是在标准库中?
输入/输出示例
[] -> []
[1] -> [128]
[1,1] -> [192]
[1,0,0,0,0,0,0,0,1] -> [128,128]
在这里,我用列表展示了示例。发电机就好了。然而,strong 不会,然后就需要在类似列表的数据和字符串之间来回转换。