zlib: Differences Between the `deflate` and `compress` Functions
zlib中的deflate()和compress()函数之间有什么区别?
我浏览了在线示例,其中一些使用deflate,而另一些使用compress。
我应该如何决定在哪种情况下使用另一种情况?
compress()用于在单个调用中压缩数据,并且始终压缩为zlib格式,即使用两个字节的标头和一个四个字节的校验值尾部压缩数据。 compress()单独使用。
deflate()用于一次压缩一个数据块,和/或压缩为其他格式,例如gzip包装或原始格式,以及其他选项,例如内存级别和压缩策略。
如果同时具有所有可用数据和足够的内存来保存结果,并且需要默认的压缩格式,内存使用率和策略,则可以使用compress()。否则,您将使用deflate()。
deflate()本身不使用。您需要使用deflateInit()或deflateInit2()初始化deflate()使用的z_stream结构。然后,您调用deflate()一次或多次以获取数据进行压缩并提供结果。最后,调用deflateEnd()释放结构中使用的内存资源。您可以阅读zlib.h和http://zlib.net/zlib_how.html中的文档以获取更多信息。
-
马克·阿德勒(Mark Adler)绝对是这方面的权威。
-
谢谢。 我读了一些,但起初并不太了解。 只是太多的信息,但是我走了,重新阅读它。
-
太好了...现在我知道为什么叫adler-32
-
@MarkAdler非常详细的答案。 有什么好的资料/书来阅读有关Zlib或Gzip的更多信息?
-
仅zlib.h和zlib.net/zlib_how.html。