为什么 ZIP 压缩不能压缩任何东西?

为什么 ZIP 压缩不能压缩任何东西?

使用 7Z 和普通 ZIP 压缩后,398MB 的目录仅压缩到 393MB。这是正常的吗?如果是,为什么人们继续在 Windows 上使用 ZIP?

答案1

如果您压缩已经压缩的内容(AVI,JPEG,MP3),那么除了将所有内容打包到一个文件中之外,您不会获得太多好处。

答案2

压缩是通过查找要压缩的项目内的重复模式来工作的。此外,由于您不想在压缩文件时丢失任何数据,因此压缩必须是无损(*)。
现在,记住这一点,想想文件(项目)在计算机上的存储方式。在最低级别,它们都只是一堆 0 和 1。

因此,问题可以转化为:“我怎样才能以比原始表示更紧凑的方式表示一堆 1 和 0?

那么让我们从头开始,如何压缩普通的单个位(单个 1 还是单个 0)的表示?
答案很简单:你不能!...以最紧凑的方式表示单个位。

好吧,让我们举一个更大的例子,如何压缩二进制字符串,0111 0111 0100 0111因为我们已经知道查看单个位对我们没有任何帮助,所以
我们知道我们必须从更大的范围来查看。例如,让我们一次取 4 位。我们现在看到二进制字符串“0111”在示例中会出现 3 次,那么我们为什么不使用单个位 0 来表示呢?但是 0100 仍然未知,因此让我们用“1”来表示。
我们知道已将原始数据压缩为:“0010”

这真的很好!然而,这只是《哈夫曼编码算法》,而在现实世界中它会比这稍微复杂一些(而且您还需要存储一个包含编码信息的表,但这对于回答这个问题来说有点太过分了)。

现在真的回答你的问题:为什么不能让所有数据都压缩得那么好?好吧,让我们再举一个例子:“0001 0110 1000 1111”,如果我们使用与上述相同的技术,我们将无法压缩数据(没有发现重复),因此不会从压缩中受益......


(*) 当然也有例外。最著名的例子是 MP3 文件的压缩。在将原始文件转换为 MP3 格式时,一些关于声音的信息会丢失,这因此压缩是有损的另一个例子是 .JPG 格式的图像

答案3

压缩过程采用可重复的模式,并将它们标记为更短的模式。输出大部分是不可重复的,因此无法压缩太多,甚至根本无法压缩。

答案4

这是正常的吗?

不。不适用于“普通”文件。你压缩的是哪种文件?如果它们已经压缩过,例如 JPG、GIF、PNG、视频甚至其他 zip 文件,那么无论使用哪种算法,压缩效果都不会太好。如果你尝试压缩文本、XML、未压缩的 BMP、源代码等文件,zip 可以提供良好的压缩效果,但可能不是绝对最佳的。

为什么人们继续在 Windows 上使用 ZIP?

一个原因是系统内置了出色的 zip 处理功能 - 您可以右键单击任意位置并创建一个新的 zip 文件,然后将内容放入其中。您只需双击 zip 文件,它就会像文件夹一样打开。您可以从中复制内容,有时甚至可以就地使用它。您无需安装 WinZip 或 7z 或任何其他程序。我通常建议人们不要这样做。

相关内容