巨大的二进制文件几乎100%收缩?

use*_*424 1 linux ubuntu binaryfiles binary-data

我创建了一个包含4,000,000个"double"值的二进制文件(总共32MB).然后,我将其压缩,令我惊讶的是,文件仅缩小到46KB.

这差不多是百分之百!这是真的吗?或者我在这里遗失了什么?

Álv*_*lez 8

压缩率取决于算法数据.例如,32MB的零压缩非常好.

更新

我的计算机科学基础相当生疏,但我可以从我记忆中推测出来.双精度可以使用8个字节(64位).-1000到1000之间的范围就像2 ^ 11个连续的整数.因此,期望所有数字可能共享64-11 = 53位,并且大部分压缩空间将用于剩余的11位.这已经节省了53/64 = 82.2%.

现在,数据可能不是完全随机的.任何体面的压缩器都应该能够检测到重复的串并获得进一步的增益.一个简单的例子:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b
Run Code Online (Sandbox Code Playgroud)