我正在写一个 霍夫曼 作为学习练习,用 Python 实现。我已经到了将可变长度霍夫曼代码写入缓冲区(或文件)的地步。才发现好像没有Python实现的bitstream类!我已经看过了 大批结构体 模块,但如果没有额外的工作,它们似乎无法满足我的需要。

出现了一点凝视 位流实现,这更像是我想要的。Python 标准库中真的没有类似的比特流类吗?

有帮助吗?

解决方案

你是对的,标准库中没有任何东西,但是你尝试过吗 位串 模块?它几乎是为此类应用程序设计的,稳定且 有据可查, ,所以我认为它应该适合您的需求。

构建、读取、切片等都是按位完成的,而且是纯Python。我过去见过用它完成的霍夫曼编码示例非常成功。

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

其他提示

正确的。stdlib 中需要比特流的大多数模块都是用 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

你明白了...

我可能来晚了一点,但是有这个比特流库:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top