【发布时间】:2014-06-27 14:14:42
【问题描述】:
众所周知,GZIP 或 DEFLATE(或任何压缩机制)有时会增加文件大小。文件可以增加的最大值(百分比或常数)吗?这是什么?
如果一个文件是 X 字节,我要对其进行 gzip 压缩,并且我需要提前预算文件空间 - 最坏的情况是什么?
更新:有两个开销:GZIP 添加了一个标头,通常为 18 个字节,但基本上是任意长的。放气呢?这可以通过乘法因子扩展内容,我不知道。有人知道是什么吗?
【问题讨论】:
-
我猜这会将每个字节编码为文字。大概是2倍左右。您可以在压缩流前加上一个 bool 前缀,指示它是否实际经过 gzip 压缩。这允许您将最大空间限制为一个额外的字节。
-
关于 18 个额外字节:Mark 在此处解释 (stackoverflow.com/a/38148423/43615)。 10 个字节是最短的 gzip 标头(无文件名),8 个字节是校验和的常量尾部以及原始文件长度的低 4 个字节。
标签: compression gzip deflate information-theory libz