zlib压缩解压
int Compress(const std::vector<unsigned char> &input, std::vector<unsigned char> &output)
unsigned long dstLen = input.size();
output.resize(dstLen);
int iret = compress(&output[0], &dstLen, &input[0], input.size());
if (Z_OK == iret) { output.resize(dstLen); }
return iret;
int UnCompress(const std::vector<unsigned char> &input, std::vector<unsigned char> &output)
unsigned long dstLen = input.size();
int iret = Z_OK;
int offset = 1;
dstLen = (dstLen << offset);
output.resize(dstLen);
iret = uncompress(&output[0], &dstLen, &input[0], input.size());
++offset;
} while (Z_BUF_ERROR == iret);
if (Z_OK == iret) { output.resize(dstLen); }
return iret;
zlib压缩解压int Compress(const std::vector &input, std::vector &output){ unsigned long dstLen = input.size(); output.resize(dstLen); int iret = compress(&output[0], &dstLen, &input[0], input
官网:http://www.
zlib.net/
功能:
压缩一段字节流,但是不包含任何文件信息。所以如果要编写
压缩数据,还要自定义头部信息之类的,自己生成对应的文件结构
设计:CMake编译
工具(用于在windows中进行官网上的包进行工程生成,英语好的可以通过example来进行学习)。
关键字:compress,uncompress, inflate,deflate。
前几天和服务端同事联调TCP传输压缩后的Json串,遇到了 GZIP压缩问题。
需要把原来使用的的压缩算法和后端统一,现在来总结一下。
【注意】 这里就以Windows的Debug环境为例,Release版也是一样,只需更改配置编译就好。
代码演示中不未涉及文件序列化问题。文件(文件夹)压缩问题,可以参考zip压缩文章Zip压缩解压缩
1.下载zlib源码及工程文件:
https://www.zlib.net/
2.拿到源码包解压看看
3.打开目录zlib-1.2.11\contrib\vstudio\
Qt写的截图工具
notepad--:
Qt解决:warning : Z-order assignment
Ceeeeeeeeeeeeeeeeb: