Python zlib解压后重新压缩结果与原始压缩数据不一致问题排查
问题原因
你没有操作错误,该现象属于zlib压缩的正常表现,核心原因如下:
- 压缩等级参数不匹配
对比两个压缩结果的第二个字节可发现差异:原始压缩串为\xda,重新压缩得到的结果为\x9c,这两个值对应zlib头的FLEVEL字段,代表不同的压缩等级:\xda对应zlib最高压缩等级(等级9)\x9c对应zlib默认压缩等级(等级6)zlib.compress方法默认使用等级6进行压缩,你可以手动指定压缩等级为9即可让输出和原始压缩串头部匹配:
compressedData = zlib.compress(cbordata, level=9)
- zlib不承诺压缩结果字节完全一致
即使使用相同的压缩等级,不同版本的zlib库、不同平台的编译参数差异,也可能导致最终输出的压缩字节不完全相同。只要解压后的原始数据完全一致,压缩结果的字节差异不会影响正常使用,不属于错误。
内容的提问来源于stack exchange,提问作者TikTokExperience
相关产品推荐
相关产品推荐

