Algorithm deflate算法中的长度值
我压缩了文本“TestingTesting”,十六进制结果是:0b492d2ec9cc4b0f815000。我想不出长度和距离码。下面的二进制代码是相反的,因为代码要求从右到左读取位(感谢Matthew Slattery的帮助)。以下是到目前为止解析的内容:Algorithm deflate算法中的长度值,algorithm,inflate,Algorithm,Inflate,我压缩了文本“TestingTesting”,十六进制结果是:0b492d2ec9cc4b0f815000。我想不出长度和距离码。下面的二进制代码是相反的,因为代码要求从右到左读取位(感谢Matthew Slattery的帮助)。以下是到目前为止解析的内容: 1 BFINAL (last block) 01 BTYPE (static) 1000 0100 132-48= 84 T 1001 0101
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(二进制0111),因为“Testing”的长度是7个字母,它在当前位置后被复制了7个字符,但我不知道它如何在剩余的位中表示这一点。我做错了什么?距离代码是5,但距离代码5后面跟着一个“额外位”,表示实际距离为7或8。(见RFC第3.2.5段中的第二个表。)
数据的完整解码为:
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
你能给出代码表吗?(包括len0和len1代码)或者,您选择了“静态树”的哪个选项?表格在第3.2.5节中,好吧,我必须检查一下,使用其他静态huffman树的情况非常频繁(不幸)。10000100是另一个T,0000100=len=6 00101=dist=5,然后事情就变糟了。谢谢,我不知道我怎么会错过另一个T,也不知道为什么它没有被识别为模式的一部分。这至少让我们对正在发生的事情有了更多的了解。很好,我忘记了额外的一点,现在有意义了