首页
学习
活动
专区
圈层
工具
发布

解压Zlib
EN

Stack Overflow用户
提问于 2016-04-05 08:52:47
回答 1查看 740关注 0票数 0

我很难用zlib和Qt解压缩。我有由Asterix 240协议(雷达视频传输数据)提交的视频数据,应该用zlib压缩。我将数据存储在QByteArray中,并试图像这样提取数据:

代码语言:javascript
复制
QByteArray compressedRawVideoDataBlock;
QByteArray rawVideoDataBlock;
QVector <QVector <quint8>> videoDataBlock;
//Video Data
resize(rawAsterix.videoDataBlockREP);
for(int r = 0; r<videoDataBlockREP; r++)//index of Video Block
{
    for(int b = 0; b<blockSize ; b++)//index of Video Byte
    {
        compressedRawVideoDataBlock.append(static_cast<quint8>(buffer->at(i)));
        videoDataBlock[r].append(static_cast<quint8>(buffer->at(i)));
        i++;
    }
}
qDebug() << gzipDecompress(compressedRawVideoDataBlock, rawVideoDataBlock);

对于提取,我尝试了这个函数(Zlib QCompressor),但是它总是返回false,我不知道为什么。

示例数据:

代码语言:javascript
复制
videoDataBlockREP=1
blockSize=64
compressedRawVideoDataBlock.toHex() = 7801edd0010d000000c2a0f74f6d0e37884061c0800103060c183060c0800103060c183060c0800103060c183060c0800103060cbc0f0c200000010000000000
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-05 09:22:29

因为您正在尝试使用gzip解压缩程序来解压缩zlib流。这是两件不同的事情。如果您将inflateInit2的第二个参数更改为15 (而不是15 + 16),那么它应该可以工作。

另外,在zlib流结束后还有5个无关的零字节。这不会导致失败,但这五个字节将仍然未使用。

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

https://stackoverflow.com/questions/36421501

复制
相关文章

相似问题

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