【问题标题】:will the length alphabet in the deflate algorithm always consist of codes > 256?放气算法中的长度字母是否总是包含> 256的代码?
【发布时间】:2022-01-25 09:29:23
【问题描述】:

RFC1951 说“5 位:HLIT,文字/长度代码的数量 - 257 (257 - 286)”和“HLIT + 257 文字/长度字母的代码长度,已编码使用码长霍夫曼码"。

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

字面量在 0-255 之间是有意义的。块字符的结尾是 256,它不能用 8 位字节表示,并且由于 257 和 286 之间的任何内容都不能用单个字节表示,因此得出结论认为该范围内的任何代码似乎不是不合理的是长度码吗?

还有长度代码表示的实际长度的问题。在我正在查看的示例中,您可以通过减去 254 从长度代码(259)中确定实际长度(5)我可以只取长度代码并从中减去 254,但我猜长度代码可以存在该方法不起作用的情况?

【问题讨论】:

    标签: deflate


    【解决方案1】:

    是的。来自 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
    

    【讨论】:

    • 您似乎还没有阅读端到端的 RFC。
    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多