zlib inflate方法无法按预期工作

时间:2014-01-22 10:55:48

标签: c++ c zlib

这是用于充气的代码:

z_ret = inflate(&oStream, Z_SYNC_FLUSH); 
除了第一次在传入流

中,

z_ret每次都会返回Z_DATA_ERROR

1 个答案:

答案 0 :(得分:2)

根据zlib网页:

  

Z_DATA_ERROR表示inflate()检测到zlib压缩数据格式中的错误,这意味着数据不是开头的zlib流,或者数据在途中的某处已损坏因为它被压缩了。

或者,可能是使用特定的deflate字典压缩数据,zlib需要这些字典才能进行充气。如果是这种情况,根据我提到的链接:

  

...我们不知道字典是什么,因此Z_NEED_DICT指示转换为Z_DATA_ERROR

我自己并没有太多使用zlib,但是这暗示你要么已经损坏了数据,要么没有足够的信息来解压缩。


编辑:看过Salsa的评论,并更多地检查您的代码,目前尚不清楚这是否是实际问题。当z_ret失败时,您没有说明inflate有什么价值。