零的gzip压缩比

时间:2013-05-28 12:32:57

标签: compression gzip

如果我跑

dd if=/dev/zero bs=8192 count=1000000 | gzip --best >test.gz

我得到一个7950131字节的输出文件。所以压缩比为~1 / 1000。但是我期望gzip使用行程长度编码+霍夫曼代码,因此将达到至少1/100000。为什么它不能为全零文件压缩更好?

1 个答案:

答案 0 :(得分:11)

放气格式的最大压缩比为1032:1。这是因为可编码的最长运行时间为258字节。每次运行至少需要两位(长度代码为1位,距离代码为1位),因此每个压缩字节可编码4 * 258 = 1032个未压缩字节。

您可以通过gzip gzip的结果获得更多压缩。通常这不会改善压缩,但对于很长时间的运行,它可以。

顺便说一句,deflate使用的LZ77方法比游程编码更通用。不是仅使用长度,而是使用长度/距离对。这允许从一定距离复制一个字符串,或者在运行长度中复制一个字节一个距离,或者复制三个距离为三的字节等等。

相关问题