众所周知,GZIP 或 DEFLATE(或任何压缩机制)有时会增加文件大小。文件可以增加的最大值(百分比或常数)吗?它是什么?
如果一个文件是 X 字节,我要压缩它,我需要提前为文件空间做预算——最坏的情况是什么?
更新:有两个开销:GZIP 添加一个标头,通常为 18 个字节,但基本上是任意长的。放气呢?这可以通过乘法因子扩展内容,我不知道。有谁知道它是什么?
众所周知,GZIP 或 DEFLATE(或任何压缩机制)有时会增加文件大小。文件可以增加的最大值(百分比或常数)吗?它是什么?
如果一个文件是 X 字节,我要压缩它,我需要提前为文件空间做预算——最坏的情况是什么?
更新:有两个开销:GZIP 添加一个标头,通常为 18 个字节,但基本上是任意长的。放气呢?这可以通过乘法因子扩展内容,我不知道。有谁知道它是什么?
压缩文件总是有一个标头指示如何解压缩它们。
该标头的大小表示压缩无法压缩的文件时的最坏情况开销(因为数据没有顺序/模式;它是随机的)。
标头因特定算法而异,并且可能包含可变长度信息,例如存档中的文件列表。
GZip 至少有 18 个字节的开销(页眉 + 页脚中的 CRC-32),并且可以选择包含存档中的文件列表。
http://en.wikipedia.org/wiki/Gzip#File_format
请注意,在特殊情况下,自定义压缩算法可以减少或消除标头开销。例如,我使用压缩和解压缩软件已知的自定义压缩字典来压缩短文本,因此不需要标题。这是一个相当罕见的用例,在大多数情况下可能没有用(考虑到存储和带宽相对便宜)。