微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用不同的软件缩小算法的不同结果

如何解决用不同的软件缩小算法的不同结果

我目前正在阅读有关放气算法的信息,作为学习的一部分,我选择了一个使用不同方法压缩的文件。我发现并使我感到非常困惑的是,不同的方法产生了代表压缩文件的不同字节。

我尝试使用WinRar,7-Zip,使用Java zlib库(ZipOutputStream类)来压缩文件,也尝试通过对源数据(Deflater类进行压缩)来手动压缩文件。这四种方法产生的字节数完全不同。

我的目标只是看到所有方法都产生相同的字节数组,但事实并非如此,我的问题是为什么会这样?通过检查文件头确保所有该软件实际上都使用了deflate算法。

有人可以帮忙吗? deflate算法能否为完全相同的源文件产生不同的压缩结果?

解决方法

原因是Deflate是一种格式,而不是一种算法。压缩分两步进行:LZ77(在这里,您可以在可能的算法的无限近似中选择很多算法)。然后,用霍夫曼树对LZ77消息进行编码(再次有很多关于如何定义这些树的选择)。另外,时不时地在LZ77消息流中,重新定义树并开始一个新块(或不开始)是很好的。关于如何拆分这些块,这里再次有大量选择。

,

同一数据有很多很多缩小的表示形式。当然,您已经注意到可以设置压缩级别了。只有以不同的方式压缩相同数据时,这才有效果。您获得的内容取决于压缩级别,任何其他压缩设置,正在使用的软件以及该软件的版本。

唯一的保证是,当您压缩然后解压缩时,您将获得完全的开始。没有保证,也没有必要或应该保证,当您解压缩然后进行压缩时,会得到相同的结果。

您为什么有这个目标?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。