Deflate 压缩规范

Deflate Compression Specification

我目前正在查看 DEFLATE 压缩规范,对 this 部分感到困惑:

               0 - 15: Represent code lengths of 0 - 15
                   16: Copy the previous code length 3 - 6 times.
                       The next 2 bits indicate repeat length
                             (0 = 3, ... , 3 = 6)
                          Example:  Codes 8, 16 (+2 bits 11),
                                    16 (+2 bits 10) will expand to
                                    12 code lengths of 8 (1 + 6 + 5)
                   17: Repeat a code length of 0 for 3 - 10 times.
                       (3 bits of length)
                   18: Repeat a code length of 0 for 11 - 138 times
                       (7 bits of length)

如果我没理解错的话,0-15是码长序列的霍夫曼码的长度。但是,我不明白 16-18 应该是什么。感谢您的帮助!

16-18 码是指示解码器生成多个长度,可以是零,也可以是最后一个长度的重复。

例如:

18(12) 14 4 3 3 3 4 4 5 17(3) 5 16(9) 7

变为:

0 0 0 0 0 0 0 0 0 0 0 0 14 4 3 3 3 4 4 5 0 0 0 5 5 5 5 5 5 5 5 5 5 7

括号中的数字分别编码为 7、3 和 2 位,紧跟在该符号的霍夫曼编码之后。