deflate 算法中的长度字母表是否总是由大于 256 的代码组成?

will the length alphabet in the deflate algorithm always consist of codes > 256?

RFC1951 说“5 位:HLIT,# of Literal/Length 代码 - 257 (257 - 286)”和“HLIT + 257 代码literal/length 字母表的长度,使用码长霍夫曼码 ".

编码

所以文字和长度使用相同的字母表,而距离使用它们自己不同的字母表。

文字在 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