use*_*424 1 linux ubuntu binaryfiles binary-data
我创建了一个包含4,000,000个"double"值的二进制文件(总共32MB).然后,我将其压缩,令我惊讶的是,文件仅缩小到46KB.
这差不多是百分之百!这是真的吗?或者我在这里遗失了什么?
压缩率取决于算法和数据.例如,32MB的零压缩非常好.
我的计算机科学基础相当生疏,但我可以从我记忆中推测出来.双精度可以使用8个字节(64位).-1000到1000之间的范围就像2 ^ 11个连续的整数.因此,期望所有数字可能共享64-11 = 53位,并且大部分压缩空间将用于剩余的11位.这已经节省了53/64 = 82.2%.
现在,数据可能不是完全随机的.任何体面的压缩器都应该能够检测到重复的串并获得进一步的增益.一个简单的例子:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b
Run Code Online (Sandbox Code Playgroud)