Python Bitstream implementations

流过昼夜 提交于 2019-11-30 19:53:56

You're right that there's nothing in the standard library, but have you tried the bitstring module? It's pretty much designed for this kind of application, is stable and well documented, so I think it should suit your needs.

Construction, reading, slicing, etc. are all done bitwise, and it's pure Python. I've seen Huffman coding examples done with it quite successfully in the past.

Another good option is bitarray, which doesn't have as many features but can be considerably faster as it's a C extension. As a bonus it has a Huffman coding example distributed as part of the source package.

Correct. Most of the modules in the stdlib that need bitstreaming are written in C, with the details hidden away.

No, as far as I know there's nothing in the standard library that helps you with bit-aligned operations. Python is not designed to fiddle with the small stuff ^^...

But you could easily write your own bitstream-writer with the help of byte arrays:

>>> 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

You get the idea...

I'm perhaps a little late to the party, but there is this bitstream library:

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!