0

静的なハフマン コードを使用して圧縮されたデータを収縮するための膨張アルゴリズムを実装しようとしています。仕様を読んだ後、必要な手順は次のとおりであるという結論に達しました。

  1. ブロックの 3 ビット ヘッダーを読み取る
  2. 仕様に基づいてハフマン木を構築する
  3. ハフマン符号を解読する
  4. lz77 圧縮データをデコードする

手順が不足しているか、不要な手順が追加されていますか?

4

1 に答える 1

1

#2 では、最初の 3 ビットの後に仕様があればそれを読み取る必要があります。これらのビットは、仕様があるかどうか、静的ツリー記述を使用する必要があるかどうか、またはデータが圧縮されずに保存されているかどうかを示します。後者の場合、手順 2 ~ 4 をスキップして、代わりにブロックの長さと補数を読み取り、次にそのブロックのバイト数を読み取ります。

#3は次のとおりです。エンドブロックコードが読み取られるまでハフマンコードをデコードします。

#4 は #3 と同時に行われます。各コードがデコードされると、そのアクションが実行されて非圧縮データが生成されます。

ステップ #5 が必要です。それが最後のブロック (最初の 3 ビットでマークされている) でない場合は、ステップ #1 に戻ります。

于 2013-09-03T02:50:19.437 に答える