我正在用 Python 编写一个霍夫曼实现作为学习练习。我已经到了将我的可变长度霍夫曼代码写入缓冲区(或文件)的地步。才发现好像没有Python实现的bitstream类!我已经查看了数组和结构模块,但如果没有额外的工作,它们似乎无法满足我的需求。
这个比特流实现有点眼花缭乱,这更像我想要的。Python标准库中真的没有可比的比特流类吗?
正确的。标准库中需要比特流的大多数模块都是用 C 语言编写的,并且隐藏了细节。
不,据我所知,标准库中没有任何内容可以帮助您进行位对齐操作。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
你明白了……
我参加聚会可能有点晚了,但是有这个比特流库: