質問

私は書いています ハフマン 学習演習としてのPythonでの実装。可変長のハフマンコードをバッファ(またはファイル)に書き出すポイントになりました。 Pythonによって実装されたBitStreamクラスがあるようには見えません!私はを見てきました 配列struct モジュールですが、彼らは余分な作業なしで私が必要とすることをしていないようです。

少しゴーグルが現れました これ BitStreamの実装。これは私が望んでいるものに似ています。 Python Standard Libraryには、実際に匹敵するビットストリームクラスはありませんか?

役に立ちましたか?

解決

標準ライブラリには何もないことは正しいですが、試したことはありますか ビットストリング モジュール?この種のアプリケーション向けに設計されており、安定しており、 よく文書化されています, 、だから私はそれがあなたのニーズに合うべきだと思います。

構造、読書、スライスなどはすべてビットごとに行われ、純粋なPythonです。過去にハフマンのコーディングの例を非常にうまくやっているのを見てきました。

別の良い選択肢はです ビタレイ, 、機能はあまりありませんが、C拡張であるほどかなり高速になる可能性があります。ボーナスとして、ソースパッケージの一部としてHuffman Codingの例が分散されています。

他のヒント

正しい。ビットストリーミングを必要とする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