这是用于充气的代码:
z_ret = inflate(&oStream, Z_SYNC_FLUSH);
除了第一次在传入流中, z_ret
每次都会返回Z_DATA_ERROR
答案 0 :(得分:2)
根据zlib网页:
Z_DATA_ERROR
表示inflate()
检测到zlib压缩数据格式中的错误,这意味着数据不是开头的zlib流,或者数据在途中的某处已损坏因为它被压缩了。
或者,可能是使用特定的deflate字典压缩数据,zlib需要这些字典才能进行充气。如果是这种情况,根据我提到的链接:
...我们不知道字典是什么,因此
Z_NEED_DICT
指示转换为Z_DATA_ERROR
。
我自己并没有太多使用zlib,但是这暗示你要么已经损坏了数据,要么没有足够的信息来解压缩。
编辑:看过Salsa的评论,并更多地检查您的代码,目前尚不清楚这是否是实际问题。当z_ret
失败时,您没有说明inflate
有什么价值。