GIF ファイルを解析する場合、イメージ記述子には、エンコードされていないシンボルのビット幅が含まれます (例: 8 ビット)。おそらく既にご存じのとおり、圧縮データの初期コード サイズは、エンコードされていないシンボルのビット幅よりも 1 ビット広いです (例: 9 ビット)。
また、おそらく既にご存じのとおり、GIF ファイルで可能な圧縮コードの値は、保存に 12 ビットを必要とする最大 0xFFF == 4095 まで徐々にサイズが大きくなります。
デコンプレッサが圧縮データからプルするコードごとに、デコンプレッサはその辞書に新しい項目を追加します。たとえば、デコンプレッサが読み取る最初の 2 つの 9 ビット コードが 0x028 0x0FF である場合、デコンプレッサは 2 バイト シーケンスを辞書に追加します。その後、デコンプレッサがコード 0x102 を読み取ると、デコンプレッサはその 0x102 コードを 2 つの 8 ビット バイト 0x28 0xFF にデコードします。
デコンプレッサがディクショナリに追加する次の項目には、コード 0x103 が割り当てられます。
デコンプレッサがディクショナリに追加する次の項目には、コード 0x104 が割り当てられます。...
最終的に、デコンプレッサは、コード 0x1FF が割り当てられた項目をディクショナリに追加します。これは、9 ビットに収まる最大の数です。その項目をディクショナリに格納した後、解凍プログラムは 10 ビット コードの読み取りを開始します。
デコンプレッサがディクショナリに追加する次の項目には、コード 0x200 が割り当てられます。
デコンプレッサにコード幅をインクリメントするよう指示するデータ シーケンス内の特別な「コマンド」はありません。デコンプレッサは、これまでにディクショナリに含まれるアイテムの数を追跡する必要があります (これは、次のアイテムをディクショナリに書き込む場所のインデックスとして便利に再利用できます)。デコンプレッサがアイテム 0x1ff をディクショナリに追加すると、デコンプレッサが 10 ビット コードの読み取りを開始します。デコンプレッサがアイテム 0x3ff をディクショナリに追加すると、デコンプレッサが 11 ビット コードの読み取りを開始します。