zlib:“deflate”和“compress”函数之间的差异

问题描述 投票:0回答:1

zlib 中的

deflate()
compress()
函数有什么区别?

我查看了网上的示例,有些使用 deflate,有些使用 compress。

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

compression zlib deflate
1个回答
104
投票

compress()
用于在单次调用中压缩数据,并且始终压缩为 zlib 格式,该格式是具有两字节标头和四字节校验值尾标的压缩数据。
compress()
单独使用。

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

如果您一次性拥有所有可用数据并且有足够的内存来保存结果,并且您需要默认的压缩格式、内存使用情况和策略,则可以使用

compress()
。 否则,您将使用
deflate()

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

© www.soinside.com 2019 - 2024. All rights reserved.