压缩后如何变成不同的文本文件?
-
04-10-2019 - |
题
我有一些随机文本大小= 27 GB的文件,压缩后它变为40 MB左右。
压缩后,一个3.5 GB SQL文件变为45 MB。
但是,压缩后109 MB文本文件变为72 MB,因此可能出了什么问题。
为什么压缩得那么少,必须10 MB左右,否则我缺少一些东西。
我看到的所有文件都是仅英文文本和一些语法符号(/,。-= + etc)
为什么?
如果没有,您可以说出如何超级压缩文本文件?
我可以在PHP中编码NP。
解决方案
文件的压缩比取决于其内容。
大多数压缩算法通过将重复的数据转换为单个重复,指定重复多少次来工作。
例如,包含字母的文件 a
1,000,000次被压缩的远远超过具有完全随机内容的文件。
有关更多信息,请提供更多信息。
其他提示
这样想...如果您有一个包含的文件:
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc
该文件本质上只是存储 abc times 18
另一方面,此文件:
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
只能存储:
abcdefghijklmnopqrstuvwxyz times 2
因此,即使首先要短的文件,第二个文件也比第一个文件更大。
压缩通过删除输入数据中的重复作用来起作用。压缩后,您的3.5GB文件变得越来越少,因为它具有大量的重复数据,而您的较小文件并未压缩那么多,因为它不包含那么多重复的数据。
如果您想了解压缩的工作原理是最拉动的公用事业,请看一下Wikipedia的 Lempel-Ziv-Welch 文章,这是构建这些算法大多数的算法。
PHP可能是这样一个项目的错误选择,因为该语言的速度将非常慢,而C中的C中已经是PHP本身的一部分,它的现有库非常慢。
通常,压缩级别取决于算法在文件中可以找到的相似性和模式。如果所有文件都包含英文文本,则数字很奇怪。我强烈怀疑具有极端压缩比的文件包含大量重复文本段的大部分。
不隶属于 StackOverflow