C++ ZipUtils怎么压缩滴

解压缩搞定了,就差压缩了。。这个命名有点奇怪~~~

发现 ZipUtils里面只能解压,不能压缩吧~~~~

是的,ziputils底层基于zlib.h,zlib提供了完整的压缩解压算法,可以据此写自己的压缩函数

include请自行修改

#include </zlib.h>



bool compressMemory(const unsigned char* data, uint32_t len, unsigned char** compressedData, uint32_t* compressedLen) {
    z_stream strm;
    strm.zalloc = Z_NULL;
    strm.zfree = Z_NULL;
    strm.opaque = Z_NULL;

    int ret = deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 16 + MAX_WBITS, 8, Z_DEFAULT_STRATEGY);
    assert(ret == Z_OK);

    strm.avail_in = len;
    strm.next_in = const_cast<Bytef*>(data);

    uLong maxCompressedLen = deflateBound(&strm, len);
    *compressedData = (unsigned char*)malloc(maxCompressedLen);
    //new unsigned char[maxCompressedLen];
    strm.avail_out = maxCompressedLen;
    strm.next_out = *compressedData;

    ret = deflate(&strm, Z_FINISH);
    bool result = ret == Z_STREAM_END;

    *compressedLen = maxCompressedLen - strm.avail_out;

    ret = deflateEnd(&strm);
    return result;
}

ok,谢谢