ファイル圧縮プログラムを開発しています。現在、圧縮された.ZIPアーカイバーを生成するときに、他の評判の良いコンプレッサー(7zipなど)がそれを完全に理解/解凍できるように、.ZIPアーカイバー標準を実装しています。
現在、 RFC 1951に基づいて DEFLATE アルゴリズムを開発しています。LZ77
のバリアントと、RFC と完全に互換性のある固定コードを使用したハフマン コーディングがあり、Literal-Length + Distance 値で動作します。
Dynamic Huffman Coding では、現在、一部の圧縮データ (別の信頼できるコンプレッサーで圧縮) からハフマン ツリーを抽出できますが、実際のデータの解凍を開始すると、正しくない値が得られます。
おそらく私はツリーを間違った方法で読んでいます。
これらのツリーの値が圧縮データに格納される方法を誰かが正確に説明している場所を特に見つけたことがありません。
RFCで説明されているように、固定ハフマンエンコーディングと同じ方法で、エンコードされたデータは同じリテラル長値(0〜285)+距離(0〜30)に対応するリテラル/距離あたりの余分なビットに従うと仮定します。
これが固定ハフマン エンコーディングで格納される方法は、ハフマン コードがメモリの最下位ビットにコードの最上位ビットと共に格納されることです。このようにして、エンコーディング ツリーを少しずつ読み進めることができます。ハフマン コードの余分なビットは、別の方法で格納されます。
動的ハフマン符号化はそれらを同じ方法で保存しますか?
私が見逃していること、または知っておくべきことはありますか?