首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黑莓10中的GZip

黑莓10中的GZip
EN

Stack Overflow用户
提问于 2012-12-03 16:30:58
回答 1查看 263关注 0票数 0

嗨,我是黑莓10平台的新手。我正在开发一个应用程序来解压使用GZip压缩的文件。我正在寻找用GZip压缩的解压缩文件夹。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-03 16:33:42

我也有同样的问题,我通过添加以下方法解决了这个问题

代码语言:javascript
复制
gUncompress(const QByteArray &data)
{
    qDebug()<<"Reached Guncompress";
    qDebug()<<"size="<<data.size();
    if (data.size() <= 4) {
        qWarning("gUncompress: Input data is truncated");
        return QByteArray();
    }

    QByteArray result;

    int ret;
    z_stream strm;
    static const int CHUNK_SIZE = 1024;
    char out[CHUNK_SIZE];

    /* allocate inflate state */
    strm.zalloc = Z_NULL;
    strm.zfree = Z_NULL;
    strm.opaque = Z_NULL;
    strm.avail_in = data.size();
    strm.next_in = (Bytef*)(data.data());

    ret = inflateInit2(&strm, 15 +  32); // gzip decoding
    if (ret != Z_OK)
        return QByteArray();

    // run inflate()
    do {
        strm.avail_out = CHUNK_SIZE;
        strm.next_out = (Bytef*)(out);

        ret = inflate(&strm, Z_NO_FLUSH);
        Q_ASSERT(ret != Z_STREAM_ERROR);  // state not clobbered

        switch (ret) {
        case Z_NEED_DICT:
            ret = Z_DATA_ERROR;     // and fall through
        case Z_DATA_ERROR:
        case Z_MEM_ERROR:
            (void)inflateEnd(&strm);
            return QByteArray();
        }

        result.append(out, CHUNK_SIZE - strm.avail_out);
    } while (strm.avail_out == 0);

    // clean up and return
    inflateEnd(&strm);
    return result;
}

我想这会解决你的问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13679592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档