5

「TestingTesting」というテキストを圧縮したところ、16 進数の結果は 0B 49 2D 2E C9 CC 4B 0F 81 50 00 でした。長さと距離のコードがわかりません。以下のバイナリは、RFCでビットを右から左に読み取るように指示されているため、逆になっています (Matthew Slattery の助けに感謝します)。これまでに解析されたものは次のとおりです。

1                       BFINAL (last block)
01                      BTYPE (static)
1000 0100   132-48=  84 T
1001 0101   149-48= 101 e
1010 0011   163-48= 115 s
1010 0100   164-48= 116 t
1001 1001   153-48= 105 i
1001 1110   158-48= 110 n
1001 0111   151-48= 103 g

これらは、解析方法がわからない残りのビットです。

1000 0100 0000 1000 0101 0000 0000 0

最後の 10 ビット (ブロック値の末尾は x100) は、解析できる唯一の部分です。「テスト」の長さは7文字で、現在の位置の7文字後にコピーされるため、長さと距離の値は7(バイナリ0111)である必要があると思いますが、残りの部分でこれをどのように表しているかわかりませんビット。私は何を間違っていますか?

4

1 に答える 1

5

距離コードは 5 ですが、距離コード 5 の後に 1 つの「追加ビット」が続き、実際の距離が 7 または 8 であることを示します (RFC のパラグラフ 3.2.5 の 2 番目の表を参照してください)。

データの完全なデコードは次のとおりです。

1          BFINAL
01         BTYPE=static
10000100  'T'
10010101  'e'
10100011  's'
10100100  't'
10011001  'i'
10011110  'n'
10010111  'g'
10000100  another 'T'
0000100   literal/length code 260 = length 6
00101     distance code 5
0         extra bit  => the distance is 7
0000000   literal/length code 256 = end of block
于 2011-09-16T20:39:51.520 に答える