关于压缩:zlib:deflate和compress函数之间的区别

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中的文档以获取更多信息。