【发布时间】:2020-07-10 05:42:45
【问题描述】:
根据DEFLATE spec:
- 压缩表示概述
一个压缩数据集由一系列块组成,对应于输入的连续块 数据。块大小是任意的,除了不可压缩 块限制为 65,535 字节。
每个块都使用 LZ77 算法和 霍夫曼编码。每个块的霍夫曼树独立于 那些用于先前或后续块的; LZ77 算法可以使用 引用前一个块中出现的重复字符串,最多 之前的 32K 输入字节。
每个块由两部分组成:一对霍夫曼代码树 描述压缩数据部分的表示,以及 压缩数据部分。 (霍夫曼树本身是压缩的 使用霍夫曼编码。)压缩数据由一系列 两种类型的元素:文字字节(尚未被 检测为在前 32K 输入字节中重复),以及 指向重复字符串的指针,其中指针表示为 对。中使用的表示 “deflate”格式将距离限制为 32K 字节,长度限制为 258 字节,但不限制块的大小,除了 不可压缩的块,如上所述受到限制。
所以指向重复字符串的指针只能返回 32 KiB,但是由于块大小不受限制,Huffman 代码树是否可以将两个超过 32 KiB 的重复字符串存储为相同的代码?那么限制因素是块大小吗?
【问题讨论】:
标签: gzip huffman-code deflate lz77