zlib基本使用

不关心算法细节,直接用,拿来主义,我们可以直接使用zlib的压缩解压的接口的,但是为了使用我们自己的内存管理器,所以用自己的接口了。


voidpf myalloc(voidpf opaque,unsigned num, unsigned size)//内存分配
{
	return (voidpf) mymemallocator(num*size);
}
void myfree(voidpf opaque, voidpf ptr)//内存回收
{
	mymemfree(ptr);
}
int compress(Bytef* dest, uLongf *destLen, const Bytef *source, unsigned long sourceLen, int level)
{
	z_stream stream;
	int errno;
	stream.next_in = (Bytef*)source;
	stream.avail_in = (uInt)sourceLen;
	stream.next_out = dest;
	stream.avail_out = (uInt)*destLen;
	if((uLong)stream.avail_out != *destLen || (uLong)stream.next_in != sourceLen)return Z_BUF_ERROR;
		
	stream.zalloc = (alloc_func)myalloc;
	stream.zfree =(free_func)myfree;
	stream.opaque =(voidpf)0;
	
	errno =deflateInit(&stream,level);
	if(errno != Z_OK) return errno;
	
	errno = deflate(&stream,Z_FINISH);
	if(errno != Z_STREAM_END)
	{
		deflateEnd(&stream);
		return errno = Z_OK?Z_BUF_ERROR:errno;
	}
	*destLen = stream.total_out;
	errno = deflateEnd(&stream);
	return errno;
}




压缩使用deflate,解压就用inflate相关的函数就可以了。过几天我再把网络编程中常用的rc5,des,cast,ipp加密解密整理一下。

这些东西就是得经常用,经常看,要不然几天又给忘光了



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值