Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm deflate算法中的长度值_Algorithm_Inflate - Fatal编程技术网

Algorithm deflate算法中的长度值

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

我压缩了文本“TestingTesting”,十六进制结果是:0b492d2ec9cc4b0f815000。我想不出长度和距离码。下面的二进制代码是相反的,因为代码要求从右到左读取位(感谢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(二进制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,也不知道为什么它没有被识别为模式的一部分。这至少让我们对正在发生的事情有了更多的了解。很好,我忘记了额外的一点,现在有意义了