在vc中用7zip进行数据流的压缩解压操作

因为工作中要对收到的数据用7Zip算法进行压缩并保存,所以用了下7zip的sdk。结果前后花了差不多2天才真正的用顺7zip的压缩和解压缩功能。

 

第一步:首先下载7zip的sdk,我下的是lzma920.tar.bz2

第二步:解压文件,进入..\C\Util\LzmaLib,用vc6.0打开LzmaLib.dsw文件。

    之前也在网上看到文章说这个sdk存在一个bug,就是当解压缩的时候传入buffer的长度不等于解压缩后文件的长度时,虽然能正确解压缩,但函数会返回一个错误,需要对源文件进行修改:打开.\c\LzmaDec.c文件,定位到LzmaDec_DecodeToDic这个函数,修改下面图片中注释的地方。利用7zip <wbr>sdk进行数据流的压缩与解压缩 利用7zip <wbr>sdk进行数据流的压缩与解压缩

第三步:编译工程,生成release文件。

    注意生成的dll文件在C:\Util目录下,lib文件在当前工程目录下。

第四步:在自己的工程中加入LzmaLib.h,LZMA.lib和LZMA.dll文件就可以使用压缩和解压缩功能了。
第五步:压缩数据。利用7zip <wbr>sdk进行数据流的压缩与解压缩

    函数定义不解释了。

第六步:解压缩。如果要解压缩文件,必须要用到压缩时函数使用的outProps数据。因此在将压缩后的数据保存至文件时,一定要将outProps数组内的内容也要保存进去,作为以后解压缩函数的参数使用(我就在这边卡了一天多,网上的文章几乎都没提到这个事情)。最好再将原始文件长度也保存至文件中作为解压缩后的比较。利用7zip <wbr>sdk进行数据流的压缩与解压缩


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值