android ndk zlib,Android NDK zlib返回Z_DATA_ERROR以获取有效的zip信息

我正在执行以下操作来解压缩一个压缩数据块:

z_stream stream;

int err;

int nExtraChunks;

uInt destlen;

stream.next_in = (Bytef*)pSrc;

stream.avail_in = (uInt)nSrcLen;

destlen = (uInt)*pnDestLen;

stream.zalloc = Z_NULL;

stream.zfree = Z_NULL;

stream.opaque = Z_NULL;

err = inflateInit(&stream);

if (err != Z_OK)

return err;

nExtraChunks = 0;

do {

stream.next_out = pDest;

stream.avail_out = destlen;

err = inflate(&stream, Z_FINISH);

if (err == Z_STREAM_END )

break;

if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))

{

err = Z_DATA_ERROR;

}

if (err != Z_BUF_ERROR)

{

inflateEnd(&stream);

return err;

}

nExtraChunks += 1;

} while (stream.avail_out == 0);

*pnDestLen = stream.total_out;

err = inflateEnd(&stream);

if (err != Z_OK) return err;

return nExtraChunks ? Z_BUF_ERROR : Z_OK;其中pSrc和nSrcLen,pDest和destLen被赋予内存块及其各自的长度。 pSrc保存有效的zip文件的内容。

(这个例程是根据easyzlib驱动函数改编的,但我直接使用NDK提供的zlib。)

对于我所做的每个呼叫,第一次充气呼叫返回-3(Z_DATA_ERROR)。我已经确认,通过将内存块写入磁盘,并通过“adb pull”将其下载到我的mac并对其进行枪劈,可以确保zip的有效性。我不太了解zlib ......我能做些什么来调试呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值