deflate()
和 compress()
是zlib中两个函数,它们有什么不同?
我查看了一些在线示例,有些使用了deflate,而有些使用了compress。
我应该如何决定在什么情况下使用其中之一?
deflate()
和 compress()
是zlib中两个函数,它们有什么不同?
我查看了一些在线示例,有些使用了deflate,而有些使用了compress。
我应该如何决定在什么情况下使用其中之一?
compress()
用于单次压缩数据,始终将数据压缩为zlib格式,该格式为带有两字节标头和四字节检查值尾部的deflate数据。compress()
单独使用。
deflate()
用于逐个块地压缩数据,并/或压缩到其他格式(例如包装在gzip或raw中),以及使用其他选项,如内存级别和压缩策略。
如果您拥有一次性可用的所有数据和足够的内存来存储结果,并且想要默认的压缩格式、内存使用和策略,则应使用compress()
。否则,您将使用deflate()
。
不单独使用deflate()
。您需要使用deflateInit()
或deflateInit2()
初始化由deflate()
使用的z_stream
结构。然后,调用deflate()
一次或多次以接收要压缩的数据并使结果可用。最后,调用deflateEnd()
以释放在结构中使用的内存资源。您可以在zlib.h和http://zlib.net/zlib_how.html中阅读文档以获取更多信息。