DEFLATE エンコーディングがどのように機能するかを理解するのに助けが必要です。これは LZSS アルゴリズムとハフマン コーディングの組み合わせです。
したがって、たとえば「Deflate late」をエンコードしてみましょう。Params: [検索バッファー: 8kb および先読みバッファー 4kb] さて、LZSS アルゴリズムの出力は "Deflate <5, 4>" です。次のステップでは、静的ハフマン コーディングを使用して冗長性を減らします。これが私の問題です。このペア <5, 4> をハフマンでエンコードする方法がわかりません。
【編集済】
D 000
f 001
l 010
a 011
t 100
_ 101
e 11
さて、この表によると、文字列 "Deflate " は 000 11 001 010 011 100 11 101 と書かれています。次のステップとして、ペア (5, 4) をエンコードしましょう。本「Data Compression - The Complete Reference」によると、長さ 4 の固定プレフィックス コードは 258 で、その後に距離 5 の固定プレフィックス コード (コード 4 + 1 エクストラ ビット) が続きます。
それは次のように要約できます。
長さ 4 -> 258 -> 0000010
距離 5 -> 4 + 余分なビット 1 -> 00100|0
したがって、エンコードされた文字列は [header: 1 01] 000 11 001 010 011 100 11 101 0000010 001000 [end-of-block: 0000000] のように記述されますが、ハフマン ツリーを作成すると、静的なハフマンではなくなります。右?
良い一日