Python比特流实现

时间:2010-03-15 20:22:37

标签: python bitstream

我在Python中编写huffman实现作为学习练习。我已经将我的可变长度霍夫曼代码写入缓冲区(或文件)。只是发现似乎没有Python实现的比特流类!我查看过arraystruct模块,但如果没有额外的工作,它们似乎无法满足我的需求。

有点令人眼花缭乱的this比特流实现,这更像是我想要的。 Python标准库中确实没有类似的比特流类吗?

4 个答案:

答案 0 :(得分:9)

你是对的,标准库中没有任何东西,但是你试过bitstring模块吗?它几乎是为这种应用而设计的,稳定且well documented,所以我认为它应该适合你的需求。

构造,阅读,切片等都是按位完成的,它是纯Python。我在过去看到过很成功的哈夫曼编码示例。

另一个不错的选择是bitarray,它没有那么多功能但可以快得多,因为它是C扩展。作为奖励,它有一个霍夫曼编码示例作为源包的一部分分发。

答案 1 :(得分:1)

正确。 stdlib中需要比特流的大多数模块都是用C语言编写的,其中隐藏了详细信息。

答案 2 :(得分:1)

不,据我所知,标准库中没有任何内容可以帮助您进行位对齐操作。 Python不是为了摆弄小东西而设计的^^ ...

但是你可以在字节数组的帮助下轻松编写自己的比特流编写器:

>>> from array import array
>>> a = array("B")
>>> a.append(1) # 128
>>> a.append(0)
>>> a.append(0)
>>> a.append(0)
>>> a.append(1) # 8
>>> a.append(1) # 4
>>> a.append(1) # 2
>>> a.append(1) # 1
>>> print reduce(lambda m, n: (m << 1) + n, a, 0)
143

你明白了......

答案 3 :(得分:1)

我可能有点迟到了,但是有这个比特流库:

https://pypi.python.org/pypi/bitstream/2.0.3