私の質問は具体的です。私は、ハフマン符号化の理論が理解しやすいことを見ることができます。しかし、通常はバイト境界に揃えないコードを作成するようです。この特定の問題を緩和する実際的な方法は、私がまだ出てきたチュートリアルで扱われていません。実際にハフマンコーディングテーブルはどのように構築されていますか?
二つの問題がある:ファイルがエンコードされたら
(1)、ファイルの結果のハフマンコードファイルの末尾がバイト境界で整列しなくてもよいが。圧縮ファイルでハフマン符号化データの終わりに達したことをどのようにして知ることができますか?
(2)圧縮解除に役立つように、ファイルにハフマンテーブルが含まれている場合、実際には、バイト境界との位置合わせに遭遇しないので、このようなテーブルはどのように作成されますか?シンボル自体は8ビットまたは16ビットです。しかしながら、ハフマン符号は、任意の数のビットとすることができる。コードあたりのハフマンコードを含めると、ハフマンテーブルをデコーダーが使用してバイナリツリーやその他のデータ構造を作成して解凍に役立てることができるように、ビット数を含める必要があります。
ハフマンとArithmaticコーディングは、多くの圧縮システムで使用されているように見えます。したがって、この問題は引き続きポップアップしています。
これはJPEGでどのように行われているかを理解しようとしており、Nios IIソフトコアプロセッサをFPGAで使用してCでエンコーダを構築し、カメラからSDカードにJPEGファイルを保存します。
[タグ:c]との関連性は特にありません。私が知る限り、ハフマンコーディングは言語に依存しません。 –
EOFは常にパディングを使用してバイト整列されます。これは、ストリームがバイト境界から終了するときに常に必要です(そうでなければ、任意の値を持つ余分なビットが解析されます)。 – Myst
しかし、パディングの始まりを知る方法は? – quantum231