23

zlib中的deflate()和函数有什么区别?compress()

我浏览了在线示例,其中一些使用了 deflate,而另一些则使用了 compress。

我应该如何决定使用哪种情况而不是另一种情况?

4

1 回答 1

83

compress()用于在单次调用中压缩数据,并且始终压缩为zlib格式,这是一种带有 2 字节标头和 4 字节校验值尾部的压缩数据。 compress()是单独使用的。

deflate()用于一次压缩数据块,和/或压缩为其他格式,例如gzip -wrapped 或raw,以及其他选项,例如内存级别和压缩策略。

compress()如果您同时拥有所有可用数据并且有足够的内存来保存结果,并且您想要默认的压缩格式、内存使用和策略,您会使用。否则,您将使用deflate().

deflate() 本身不使用。您需要使用deflateInit()deflateInit2()初始化所z_stream使用的结构deflate()。然后您调用deflate()一次或多次以获取数据以压缩并提供结果。最后,deflateEnd()调用释放结构中使用的内存资源。您可以阅读zlib.hhttp://zlib.net/zlib_how.html中的文档以获取更多信息。

于 2012-04-16T03:36:59.337 回答