解压缩搞定了,就差压缩了。。这个命名有点奇怪~~~
发现 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,谢谢