Zlib
简介
ZLib的最新版本可以在http://www.zlib.net下载,下载后的源代码包含Windows平台上Visual C++的 BYTE*lpd;工程文件,只需用Visual C++编译该工程即可得到开发所需的zlib.1ib以及z1ib.h文件 zconf.h;
例如 double数据转化成38万的Byte数据经过压缩后得到6.9万Byte数据;而WORD质量码数据10万,压缩后是118的Byte,你没看错,的确是118Byte!!zip的极限压缩也不比这强多少。测试数据73M的复合文档压缩后是9M(其中仅对数据和质量码进行过压缩,其余大概400K未压缩)。
//质量码
len = m_QualList.size();
sf.Write(&len,sizeof(int));//压缩前的长度
//压缩数据uLong comprLen;
len = len*sizeof(WORD);
Byte * compr = new Byte[len];
compress(compr, &comprLen, (Bytef*)&(m_QualList[0]), len);
len = comprLen;
sf.Write(&len,sizeof(int));//压缩后的长度
sf.Write(compr,comprLen*sizeof(Bytef));
delete []compr; ----------------------------------------------------------------
uLong uncomprLen;
m_QualList.clear();
sf.Read(&len,sizeof(int));//压缩前的长度
m_QualList.resize(len);
sf.Read(&len,sizeof(int));//压缩后的长度
Byte * compr = new Byte[len];
sf.Read(compr,len*sizeof(Byte));
uncompress((Bytef*)&(m_QualList[0]), &uncomprLen, compr, len);
delete []compr;