【问题标题】:Decompressing a byte array with zlib to a byte array用zlib解压字节数组为字节数组
【发布时间】:2016-02-13 17:59:29
【问题描述】:

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

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

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

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

我引用页面:

对于 zlib 流嵌入到其他数据中的应用程序,这 需要修改例程以返回未使用的数据,或者在 最少表明有多少输入数据没有被使用,所以 应用程序会知道在 zlib 流之后从哪里获取。

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

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

【问题讨论】:

    标签: c++ sqlite gzip zlib inflate


    【解决方案1】:

    听起来 SQLite 给你一个 zlib 流,后面没有任何东西。如果是这样,则该评论不适用。

    无论如何,您正在查看the right page。 (您没有说“页面”是什么,但我认得这句话,因为我写了它。)这通常显示了如何使用 zlib 函数。您应该能够弄清楚如何将其应用于字节数组而不是文件输入。

    如果数据确实是“gzipped”,那么您将需要使用inflateInit2() 而不是inflateInit()。阅读zlib documentation in zlib.h

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-01
      • 2011-10-29
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多