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

问题描述 投票:0回答:1

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

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

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

c compression zip 7zip lzw
1个回答
1
投票

无损压缩不可能将每个文件压缩为较短的文件。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.