我正在compression_encode_buffer
使用COMPRESSION_ZLIB
对zlib压缩iOS应用中的数据,但结果是缺少zlib标头。
例如:
size = compression_encode_buffer(
destinationBuffer, destinationBufferSize,
sourceBuffer, sourceBufferSize, nil,
COMPRESSION_ZLIB
)
将返回字节:
AD 53 C1 8E 9B 30 …
例如,在使用相同数据的Python data.encode("zlib")
时,将返回:
78 9C AD 53 C1 8E 9B 30 …
^^ ^^ correct zlib header
这是怎么回事?为什么不包含标题?是否有一种“正确”的方式来添加它?
答案 0 :(得分:4)
这两个字节是一个zlib标头,而不是一个幻数。很可能你也错过了流的最后4个字节(ADLER32校验和),并且只有" deflate"您希望将数据流包装在zlib数据流中的数据流。 iOS documentation同样说:
ZLIB
The encoded format is the raw DEFLATE format as described
in IETF RFC 1951 Using the ZLIB library
他们应该调用压缩方法" DEFLATE"不是" ZLIB"。
有关处理ZLIB与DEFLATE数据的信息,请参阅此related question。