使用zlib将字节数组解压缩为字节数组

时间:2016-02-13 17:59:29

标签: c++ sqlite gzip zlib inflate

上下文:我使用.mbtiles文件,一种地理数据文件格式,这是一个包含矢量切片的sqlite数据库文件。

使用协议缓冲区打包那些矢量切片,然后进行gzip压缩。

我正在使用C ++,目前正在阅读zlib用法解压缩示例,但我不确定如何处理块和流事件的结束。

SQLite给了我一个void *指针和一个长度。

我引用页面:

  

对于zlib流嵌入其他数据的应用程序,这个   例程需要修改以返回未使用的数据,或者   至少表明没有使用多少输入数据,所以   应用程序将知道在zlib流之后的哪个位置。

协议缓冲区类方法采用void *或std :: string。我想我应该选择无效*。

我不确定这些事件是如何工作的,这个例子似乎并没有为字节数组提供一个案例。我应该如何更改代码以避免错误?

1 个答案:

答案 0 :(得分:1)

听起来SQLite正在为你提供一个没有任何东西的zlib流。如果是这样,则该评论不适用。

无论如何,您正在关注the right page。 (你没有说出什么"页面"是,但我认识到引用,因为我写了它。)这总体上显示了如何使用zlib函数。您应该能够弄清楚如何将其应用于字节数组而不是文件输入。

如果数据确实是" gzipped",那么您需要使用inflateInit2()代替inflateInit()。阅读zlib documentation in zlib.h