简单记录下用法,详细参数再研究。
deflate 压缩;inflate 解压。
-----------------------------------------------------------------------------
#include <zlib.h>
#include <stdio.h>
#include <string.h>
#define BSIZE 80
int main()
{
z_stream s;
unsigned char bufin[BSIZE];
unsigned char bufout[BSIZE];
int len;
memcpy(bufin, "hello", 5);
// compress
s.zalloc = Z_NULL;
s.zfree = Z_NULL;
s.opaque = Z_NULL;
if ( Z_OK != deflateInit(&s, Z_DEFAULT_COMPRESSION) )
{
printf("deflateInit fail!\n");
return 1;
}
s.next_in = bufin;
s.avail_in = 5;
s.next_out = bufout;
s.avail_out = BSIZE-1;
if ( Z_STREAM_END != deflate(&s, Z_FINISH) )
{
printf("deflate fail!\n");
return 1;
}
len = s.total_out;
if ( Z_OK != deflateEnd(&s) )
{
printf("deflateEnd fail!\n");
return 1;
}
// de-compress
memset(bufin, 0, BSIZE);
s.zalloc = Z_NULL;
s.zfree = Z_NULL;
s.opaque = Z_NULL;
if ( Z_OK != inflateInit(&s) )
{
printf("ieflateInit fail!\n");
return 1;
}
s.next_in = bufout;
s.avail_in = len;
s.next_out = bufin;
s.avail_out = BSIZE-1;
if ( Z_STREAM_END != inflate(&s, Z_FINISH) )
{
printf("inflate fail!\n");
return 1;
}
len = s.total_out;
if ( Z_OK != inflateEnd(&s) )
{
printf("inflateEnd fail!\n");
return 1;
}
// print
bufin[len] = '\0';
printf("bufin = %s\n", bufin);
return 0;
}
-----------------------------------------------------------------------------
评论