zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使用。zlib数据格式本身可跨平台移植。与Unix compress(1)和GIF图像格式中使用的LZW压缩方法不同,zlib中当前使用的压缩方法实际上从不扩展数据。(在极端情况下,LZW可以使文件大小增加一倍或三倍。)zlib的内存占用空间也与输入数据无关,并且可以在必要时减少压缩量,从而减少了输入数据
http://www.zlib.net/https://github.com/madler/zlib centos + clion 环境当前系统:centos7
编译器: clion
1、创建一个工程
2、CMakeLists.txt
3、main.cpp
#include <stdio.h>#include "zlib.h"int main(){ //原始数据 const unsigned char strSrc[]="hello world!n aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试 aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试"; unsigned char buf[1024]={0},strDst[1024]={0}; unsigned long srcLen=sizeof(strSrc),bufLen=sizeof(buf),dstLen=sizeof(strDst); printf("Src string:%snLength:%dn",strSrc,srcLen); //压缩 compress(buf,&bufLen,strSrc,srcLen); printf("nAfter Compressed Length:%dn",bufLen); printf("Compressed String:%sn",buf); //解压缩 uncompress(strDst,&dstLen,buf,bufLen); printf("nAfter UnCompressed Length:%dn",dstLen); printf("UnCompressed String:%sn",strDst); return 0;} qt + win10 当前环境 win10qt5.14.0 测试1、新建一个工程
2、在untiled.pro中加:
3、main.cpp修改为:
#include "mainwindow.h"#include <libssh2.h>#include <QApplication>#include <zlib.h>//c++ zlibvoid Test1(){ //原始数据 const unsigned char strSrc[]="hello world!n aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试 aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试"; unsigned char buf[1024]={0},strDst[1024]={0}; unsigned long srcLen=sizeof(strSrc),bufLen=sizeof(buf),dstLen=sizeof(strDst); printf("Src string:%snLength:%dn",strSrc,srcLen); //压缩 compress(buf,&bufLen,strSrc,srcLen); printf("nAfter Compressed Length:%dn",bufLen); printf("Compressed String:%sn",buf); //解压缩 uncompress(strDst,&dstLen,buf,bufLen); printf("nAfter UnCompressed Length:%dn",dstLen); printf("UnCompressed String:%sn",strDst); fflush(stdout);}int main(int argc, char *argv[]){ QApplication a(argc, argv); Test1(); MainWindow w; w.show(); return a.exec();}4、运行效果
中文乱码待解决
参考Qt文档档案
Windows VS2017 编译 libssh2 1.7.0(执行命令、文件上传、下载)
MinGW环境libssh2安装