2011-03-06 45 views
0

是否保证对于给定的压缩级别和给定的输入,压缩流将始终保持不变,也适用于不同的(即将推出的)zlib版本?zlib:压缩流总是一样的吗?

或者有什么办法可以让它变成这样吗?

否则,我将不得不复制一些特定的zlib版本到我的项目,并坚持。 (因为我需要这样的保证。)

感谢, 阿尔伯特

+0

是不是由标准设置的压缩算法?这将使未来发生显着变化的可能性很小(除了现有数据的巨大突出之外)。 – 2011-03-06 16:42:52

回答

0

它根本没有保证。它有可能产生具有相同zlib参数的无限不同的压缩流 。这就是为什么有会之类的东西 gziphack:http://groups.google.com/group/comp.compression/browse_thread/thread/82fafc72949ed46c/0115418726ed45e1
http://www.advsys.net/ken/util/kzip.exe
http://www.advsys.net/ken/util/pngout.exe
http://www.walbeehm.com/download/DeflOpt207.7z

+0

当然很显然,有许多不同的压缩流解压缩到相同的数据。但那不是问题。问题是如果zlib中的算法总会产生相同的结果。因为在我的用例中,我需要这个。 – Albert 2011-03-06 18:49:59

+0

我已经测试过zlib 114和121-125,生成的代码似乎与所有选项相同(尽管zip存档标题有些差异)。但是还有其他库(例如Intel IPP中的zlib版本)可以用来代替zlib,甚至可以生成不同的代码。而且也不能保证未来的zlib版本,因为它们可能包含并行处理或其他一些会影响压缩的功能。 – Shelwien 2011-03-06 22:05:17

0

如果您正在使用的zlib相同的版本,则压缩将是完全一样的。显然,没有人可以对“即将发布的版本”发表任何评论。

1

没有理由的zlib打破如此庞大的安装基础兼容性。今天构建的zlib压缩流几乎没有可能在明天或明天之后的任何时候不再受到更新版本zlib的支持。 您可以安全地休息这个隐含的保证:整个行业取决于zlib的向前和向后兼容性。

不保证互操作性的新格式只会带来不同的名称,例如7zip。