首页 > 编程知识 正文

lzf压缩算法,zlib压缩文件夹

时间:2023-05-05 16:59:47 阅读:221641 作者:1701

Zlib

简介

    z1ib是一个免费、通用、不受任何法律阻碍的、无损的数据压缩开发库,而且还是跨平台的。这意味着任何人都可以修改、使用而无需交纳任何费用。ZLib具有同winzip和winrar等商业软件相比毫不逊色的压缩率,已经成功应用在诸如MySQL、Java、3DMax、甚至是微软的DirectX等大型的系统中。目前Z1ib的最新版本是1.2.3。

ZLib的最新版本可以在http://www.zlib.net下载,下载后的源代码包含Windows平台上Visual C++的 BYTE*lpd;工程文件,只需用Visual C++编译该工程即可得到开发所需的zlib.1ib以及z1ib.h文件 zconf.h;

    7z加解压速度太慢,既便极限压缩的很小,但在应用软件开发中实效性也是异常重要的,而且7z相当占cpu基于这些原因,再次找到了zlib算法。经过测试无论从性能还是压缩比。都不算太弱。

 

    例如 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;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。