如何使用Qt自带的zlib库进行gzip格式的数据压缩与解压缩
从https://github.com/d7185540/QtZlibDemo这里拿到了一个实现, 但是为了测试压缩或解压缩时选用的缓冲区大小是否有影响进行了最简单的修改, 也就是加了个静态变量BufferSize
减小缓冲区, 事实证明, 缓冲区哪怕只有40的大小也是可以压缩与解压缩的.
由于之前找到了一个错误的例子, 导致解压缩时总是失败(因为没有正确处理缓冲区过小的问题), 这里找到了正确的例子, 故简化后在此记录.
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QtZlib/zlib.h>
const int BufferSize = 40;
QByteArray GzipCompress(QByteArray postBody)
{
QByteArray outBuf;
z_stream c_stream;
int err = 0;
int windowBits = 15;
int GZIP_ENCODING = 16;
if (!postBody.isEmpty())
{
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
c_stream.next_in = (Bytef *)postBody.data();
c_stream.avail_in = postBody.