- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 compression_encode_buffer
和 COMPRESSION_ZLIB
在 iOS 应用程序中对数据进行 zlib 压缩,但结果缺少 zlib header 。
例如:
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
这是怎么回事?为什么不包含 header ?是否有“正确”的添加方式?
最佳答案
这两个字节是 zlib header ,而不是魔数(Magic Number)。很可能您也丢失了流的最后 4 个字节(ADLER32 校验和),并且只有您希望包装在 zlib 数据流中的“缩小”数据流。 iOS documentation说了这么多:
ZLIB
The encoded format is the raw DEFLATE format as described
in IETF RFC 1951 Using the ZLIB library
他们应该将压缩方法称为“DEFLATE”而不是“ZLIB”。
查看此 related question关于处理 ZLIB 与 DEFLATE 数据。
关于iOS compression_encode_buffer 不包含 zlib header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279687/
我正在使用 Swift 的压缩库将图像压缩为 NSData。这是代码: var imageCompressed:NSData compression_encode_buffer( imageCompr
我正在使用 compression_encode_buffer 和 COMPRESSION_ZLIB 在 iOS 应用程序中对数据进行 zlib 压缩,但结果缺少 zlib header 。 例如:
我有一个 iOS 应用程序压缩了一堆小数据 block 。我使用在 LZ4 模式下运行的 compression_encode_buffer 来执行此操作,以便它足够快以满足我的需求。 稍后,我将我制
我是一名优秀的程序员,十分优秀!