zlib中的compress压缩操作-C语言学习笔记6

zlib提供了压缩和解压缩操作

压缩函数:

int compress(Bytef *dest,uLongf *destLen,const Bytef *source,uLong sourcelen);
1.compress 函数将source 缓冲区中的内容压缩到dest缓冲区。
2.sourcelen表示缓冲区大小(以字节为单位)
3.注意函数的第二个参数destLen是传址调用
4.当调用函数时,destLen表示dest缓冲区的大小,destLen>(sourceLen+12)*100.1%。
5.当函数退出后,destLen表示压缩后缓冲区的实际大小。此时destLen/sourceLen正好就是压缩率。

6.compress成功的话,则返回Z_OK;若没有足够内存,则返回Z_MEM_ERROR;若输出缓冲区不够大,则返回Z_BUF_ERROR.

解压缩函数

int uncompress(Bytef *dest,uLongf *destLen,const Bytef *source,uLong sourceLen);
1.将source缓冲区的内容解压缩到dest缓冲区。
2.sourceLen是source缓冲区的大小(以字节为单位)。
3.注意函数的第二个参数destLen是传址调用
4.destLen表示dest缓冲区的大小,dest缓冲区要足以容纳下解压后的数据。
5.在进行解压缩时,需要提前知道被压缩的数据,解压出来会有多大。这就要求在进行压缩前,保存原始数据的大小(也就是解压后的数据的大小)。当函数退出后,destLen是解压出来的数据的实际的大小
6.uncompress若成功,则返回Z_OK,
若没有足够内存,则返回Z_MEM_ERROR
若输出缓冲区不够大,则返回Z_BUF_ERROR
若输入数据有误,则返回Z_DATA_ERROR.

目前测试发现对以上两个函数来说,只要destLen进入函数之前足够大,函数结束时返回的destLen就是真实长度,这种说法不知是否严谨,望大家纠正我。感谢

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值