静的なハフマン コードを使用して圧縮されたデータを収縮するための膨張アルゴリズムを実装しようとしています。仕様を読んだ後、必要な手順は次のとおりであるという結論に達しました。
- ブロックの 3 ビット ヘッダーを読み取る
- 仕様に基づいてハフマン木を構築する
- ハフマン符号を解読する
- lz77 圧縮データをデコードする
手順が不足しているか、不要な手順が追加されていますか?
静的なハフマン コードを使用して圧縮されたデータを収縮するための膨張アルゴリズムを実装しようとしています。仕様を読んだ後、必要な手順は次のとおりであるという結論に達しました。
手順が不足しているか、不要な手順が追加されていますか?
#2 では、最初の 3 ビットの後に仕様があればそれを読み取る必要があります。これらのビットは、仕様があるかどうか、静的ツリー記述を使用する必要があるかどうか、またはデータが圧縮されずに保存されているかどうかを示します。後者の場合、手順 2 ~ 4 をスキップして、代わりにブロックの長さと補数を読み取り、次にそのブロックのバイト数を読み取ります。
#3は次のとおりです。エンドブロックコードが読み取られるまでハフマンコードをデコードします。
#4 は #3 と同時に行われます。各コードがデコードされると、そのアクションが実行されて非圧縮データが生成されます。
ステップ #5 が必要です。それが最後のブロック (最初の 3 ビットでマークされている) でない場合は、ステップ #1 に戻ります。