deflateInit2 有什么特别之处可以防止 deflateSetHeader 与 deflateInit 一起使用?
What's special about deflateInit2 that prevents deflateSetHeader be used with deflateInit?
我正在尝试学习如何在我的 C 语言项目中使用 zlib 函数。我需要在我的应用程序中同时支持 RFC-1950 zlib 格式和 RFC-1952 gzip 格式。
要使用 gzip 格式,必须使用 deflateSetHeader
。但是在阅读 zlib source 的文档时,似乎说 deflateSetHeader
必须与 deflateInit2
一起使用,而不是 deflateInit
。但是这个原因没有解释。
问:deflateSetHeader
可以和deflateInit
一起使用吗?或者为什么它必须与 deflateInit2
?
一起使用
http://zlib.net/manual.html#Advanced
中都提到了
zlib 可以通过将 window-size 设置为大于 15 的值来请求生成 gzip 数据。此值只能设置为 deflateInit2
而不是 deflateInit
同样,小于 0 的值可用于请求原始“未包装”压缩数据。
不,您不需要使用 deflateSetHeader()
来生成 gzip 格式。您只需要使用 deflateInit2()
并使用 windowBits
参数值请求 gzip 格式。 deflateSetHeader()
的使用完全是可选的,仅当您希望 gzip header 内容不同于默认 header.
时才使用
是的,你只能在deflateInit2()
之后使用deflateSetHeader()
,因为deflateSetHeader()
只适用于gzip header,并且请求gzip格式的唯一方法是第一个地方是使用 deflateInit2()
.
我正在尝试学习如何在我的 C 语言项目中使用 zlib 函数。我需要在我的应用程序中同时支持 RFC-1950 zlib 格式和 RFC-1952 gzip 格式。
要使用 gzip 格式,必须使用 deflateSetHeader
。但是在阅读 zlib source 的文档时,似乎说 deflateSetHeader
必须与 deflateInit2
一起使用,而不是 deflateInit
。但是这个原因没有解释。
问:deflateSetHeader
可以和deflateInit
一起使用吗?或者为什么它必须与 deflateInit2
?
http://zlib.net/manual.html#Advanced
中都提到了zlib 可以通过将 window-size 设置为大于 15 的值来请求生成 gzip 数据。此值只能设置为 deflateInit2
而不是 deflateInit
同样,小于 0 的值可用于请求原始“未包装”压缩数据。
不,您不需要使用 deflateSetHeader()
来生成 gzip 格式。您只需要使用 deflateInit2()
并使用 windowBits
参数值请求 gzip 格式。 deflateSetHeader()
的使用完全是可选的,仅当您希望 gzip header 内容不同于默认 header.
是的,你只能在deflateInit2()
之后使用deflateSetHeader()
,因为deflateSetHeader()
只适用于gzip header,并且请求gzip格式的唯一方法是第一个地方是使用 deflateInit2()
.