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

时间:2011-01-04 15:24:47

标签: linux ubuntu binaryfiles binary-data

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

这几乎是100%的惊吓!这是真的吗?或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:8)

压缩率取决于算法数据。例如,32MB的零压缩很好。

更新

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

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

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b