使用LZW压缩压缩ZIP文件会创建一个太大的压缩文件

时间:2013-10-21 10:57:30

标签: c compression zip 7zip lzw

我尝试使用LZW压缩方法压缩zip文件(以下链接提供的代码),

http://rosettacode.org/wiki/LZW_compression#C

它创建的编码文件长度太长于原始文件大小,原因是什么? 请任何人帮我理解实时发生的事情。

1 个答案:

答案 0 :(得分:1)

无损压缩无法将每个文件压缩为较短的文件。

这是因为有256个 N 文件 N 字节长,但有(256 N -1)/ 255个短于 N 字节的文件。因此,并非每个文件都可以映射到较短的文件。

更重要的是,如果任何文件变得更短,那么一些较短的文件必须放弃它的位置才能实现这一点。所以有些文件必须变大。

无损压缩的工作原理是识别人类创建的典型文件中的常见模式,并将长的高概率字节序列转换为较短的序列。这个价格是一些序列变得更长。设计的目标是使典型文件压缩,但非典型文件必须更长。

如果压缩完成其工作,则从文件中删除冗余信息,输出类似于随机数据。然后输出无法进一步压缩。