项目中http上报数据需要先用gzip进行压缩,参考了很多资料之后,利用QT本身自带的zlib封装了压缩和解压的两个方法:
#include <QtZlib/zlib.h>
#include <QByteArray>
QByteArray Compress(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.size();
if (deflateInit2(&c_stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED,
MAX_WBITS + GZIP_ENCODING, 8, Z_DEFAULT_STRATEGY) != Z_OK) return QByteArray();
for (;;) {
char destBuf[4096] = { 0 };
c_stream.next_out = (Bytef *)destBuf;
c_stream.avail_out = 4096;
int err = deflate(&c_stream, Z_FINISH);
outBuf.append(destBuf, 4096 - c_stream.avail_out);
if (err == Z_STREAM_