放气算法中的长度字母表是否总是由 256 >的代码组成?

  • 本文关键字:代码 算法 是否 字母表 deflate
  • 更新时间 :
  • 英文 :


RFC1951说">5位:HLIT,文字/长度代码的#-257(257-286(";以及">HLIT+257个使用代码长度霍夫曼代码编码的文字/长度字母表的代码长度;。

因此,文字和长度使用相同的字母表,距离使用各自不同的字母表。

文字介于0-255之间是有道理的。块的末尾字符是256,不能用8位字节表示,由于257到286之间的任何字符都不能用一个字节表示,因此得出该范围内的任何代码都是长度代码的结论似乎不无道理?

还有长度代码所代表的实际长度的问题。在我正在看的例子中,看起来你可以通过减去254从长度代码(259(中确定实际长度(5(。我可以只取长度代码并从中减去254,但我猜可能存在这种方法不起作用的长度代码?

是。来自RFC:

Extra               Extra               Extra
Code Bits Length(s) Code Bits Lengths   Code Bits Length(s)
---- ---- ------     ---- ---- -------   ---- ---- -------
257   0     3       267   1   15,16     277   4   67-82
258   0     4       268   1   17,18     278   4   83-98
259   0     5       269   2   19-22     279   4   99-114
260   0     6       270   2   23-26     280   4  115-130
261   0     7       271   2   27-30     281   5  131-162
262   0     8       272   2   31-34     282   5  163-194
263   0     9       273   3   35-42     283   5  195-226
264   0    10       274   3   43-50     284   5  227-257
265   1  11,12      275   3   51-58     285   0    258
266   1  13,14      276   3   59-66

最新更新