Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 巨大的二进制文件缩小了近100%?_Linux_Ubuntu_Binaryfiles_Binary Data - Fatal编程技术网

Linux 巨大的二进制文件缩小了近100%?

Linux 巨大的二进制文件缩小了近100%?,linux,ubuntu,binaryfiles,binary-data,Linux,Ubuntu,Binaryfiles,Binary Data,我创建了一个二进制文件,其中包含4000000个“double”值,总计32MB。 然后,我压缩了它,令我惊讶的是,这个文件只压缩到了46KB 那几乎是100%的尖叫声!是真的吗?还是我遗漏了什么?压缩率取决于算法和数据。例如,32MB的零压缩效果相当好 使现代化 我的计算机科学基础知识很生疏,但我可以从我记忆中推测。一个double可以使用8字节64位。介于-1000和1000之间的范围类似于2^11个连续整数。因此,可以预期64-11=53位可能被所有数字共享,并且大部分压缩空间将用于剩余的

我创建了一个二进制文件,其中包含4000000个“double”值,总计32MB。 然后,我压缩了它,令我惊讶的是,这个文件只压缩到了46KB


那几乎是100%的尖叫声!是真的吗?还是我遗漏了什么?

压缩率取决于算法和数据。例如,32MB的零压缩效果相当好

使现代化 我的计算机科学基础知识很生疏,但我可以从我记忆中推测。一个double可以使用8字节64位。介于-1000和1000之间的范围类似于2^11个连续整数。因此,可以预期64-11=53位可能被所有数字共享,并且大部分压缩空间将用于剩余的11位。这已经节省了53/64=82.2%

现在,数据可能不是完全随机的。任何像样的压缩器都应该能够检测到重复的字符串并获得进一步的增益。一个过于简化的例子:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b

压缩率取决于算法和数据。例如,32MB的零压缩效果相当好

使现代化 我的计算机科学基础知识很生疏,但我可以从我记忆中推测。一个double可以使用8字节64位。介于-1000和1000之间的范围类似于2^11个连续整数。因此,可以预期64-11=53位可能被所有数字共享,并且大部分压缩空间将用于剩余的11位。这已经节省了53/64=82.2%

现在,数据可能不是完全随机的。任何像样的压缩器都应该能够检测到重复的字符串并获得进一步的增益。一个过于简化的例子:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b

价值观是什么?全零?是-1000-1000之间的双倍值。以前有一个叫做lzip的程序,可以将文件压缩到原始大小的0%。该网站似乎已经死了,但你可以在这里找到并存档副本:价值是什么?全零?是-1000-1000之间的双倍值。以前有一个叫做lzip的程序,可以将文件压缩到原始大小的0%。该网站似乎已于年去世,但您可以在此处找到并存档副本: