私はファイル圧縮プログラムを開発中です。私たちは現在、.ZIPアーカイバスタンドアールを実装しています。そのため、圧縮された.ZIPアーカイバを生成する際に、他の評判の良いコンプレッサ(7zipなど)は完全に理解/解読できます。Deflateでのダイナミックハフマンエンコーディング - RFC 1951
我々は今、私たちは、LZ77ので、リテラル長+距離値での作業、完全およびRFCと互換性が働いて固定コードとハフマン符号化のバリアントを持ってRFC 1951
に基づいてdeflateアルゴリズムを開発しています。
ダイナミックハフマンコーディングでは、現在、いくつかの圧縮データ(別の信頼性の高いコンプレッサを使用して圧縮されたもの)からハフマンツリーを抽出することができますが、実際のデータを解凍するときは、
おそらく私は間違った方法で木を読んでいます。
私は、これらのツリーの値が圧縮されたデータに格納される方法を厳密に説明している場所は特定していません。
固定されたハフマン符号化の場合と同じ方法でRFCで説明されているように、エンコードされたデータは同じリテラル長の値(0〜285)+距離(0〜30)これは固定されたハフマン符号化に格納され
方法はハフマン符号がメモリ内少なくとも上位ビットにコードの最も上位ビットで格納されていることです。この方法で、ビットごとに読み取っているエンコードツリーをナビゲートすることができます。
ハフマンコードの余分なビットは、代わりに格納されます。
ダイナミックハフマンコーディングは同じ方法でそれらを保存しますか?
私には何かがありますか?
お時間をいただきありがとうございます。 >自分で行うことを意図している場合[<]] < 実際にその場合。 >固定されていないハフマン符号化の正しい用語は「動的」です。 <適応性がない>< ああ、私は実際に私が読んだことからそれを逃した。ちょうどそれを編集しました。 ありがたいことに、デフレートで圧縮されたすべてのブロックに、独自のハフマンエンコーディングツリーがあることを理解しました。私は実際に入力から情報を読み込んだツリーを生成しています。そして、それを読み直して、それをエンコードします。 私はpuff.cを読んでいます。ありがとうございます。 ありがとうございます。 – Fonserbc