zlib 中的
deflate()
和 compress()
函数有什么区别?
我查看了网上的示例,有些使用 deflate,有些使用 compress。
我应该如何决定使用哪种情况而不是另一种?
compress()
用于在单次调用中压缩数据,并且始终压缩为 zlib 格式,该格式是具有两字节标头和四字节校验值尾标的压缩数据。 compress()
单独使用。
deflate()
用于一次压缩数据块,和/或压缩为其他格式,例如 gzip-wrapped 或 raw,以及其他选项,例如内存级别和压缩策略。
如果您一次性拥有所有可用数据并且有足够的内存来保存结果,并且您需要默认的压缩格式、内存使用情况和策略,则可以使用
compress()
。 否则,您将使用 deflate()
。
deflate()
本身不使用。 您需要使用 deflateInit()
或 deflateInit2()
来初始化 z_stream
使用的 deflate()
结构。 然后,您调用 deflate()
一次或多次以获取数据进行压缩并提供结果。 最后,调用 deflateEnd()
来释放结构中使用的内存资源。 您可以阅读 zlib.h 和 http://zlib.net/zlib_how.html 中的文档以获取更多信息。