GIF LZW 解凍に関する多数の記事を読んだことがありますが、それがどのように機能するか、またはコーディングの観点から、より厄介なコーディングのビットをどのように解決するかについて、いまだに混乱しています。
私が理解しているように、LZW 圧縮データの GIF のバイト ストリームに到達すると、ストリームは次のように伝えます。
最小コードサイズ、別名最初のバイトが始まるビット数。
さて、私が理解しているように、これにクリア コード用に 1 つ追加するか、クリア コードと EOI コード用に 2 つ追加する必要があります。しかし、私はそれがどれであるかについて混乱していますか?
つまり、3 つのカラー コード (01、10、11) があるとします。EOI コードを (00 として) 仮定すると、最小コード サイズ (2) に続くバイトは 2 ビットになるか、クリアを考慮して 3 ビットになります。コード?それとも、クリア コードと EOI コードの両方が既に最小サイズに組み込まれていますか?
2 番目の質問は、動的にサイズ変更されたビットをファイルから読み取る最も簡単な方法は何ですか? 偶数バイト (8) から奇数ビット (3 ビット、12 ビットなど) を読み取るのは、厄介でバグが多いように聞こえるからです。