unsigned char* inbuf; unsigned char* outbuf; unsigned long INBUFSIZE; unsigned long OUTBUFSIZE; inbuf=new unsigned char[1000]; strcpy((char*)inbuf,"Is good?"); INBUFSIZE=strlen((char*)inbuf)+1; fprintf(stdout,"테스트용 문자열은 다음과 같다.\n"); fprintf(stdout,"%s\n\n",inbuf); //Upon entry, destLen is the total size of the destination buffer, //which must be at least 0.1% larger than sourceLen plus 12 bytes. //Integer의 반올림 문제 때문에 1을 더했다. OUTBUFSIZE=(unsigned long)1.001*(INBUFSIZE+12) + 1; outbuf=new unsigned char[OUTBUFSIZE]; //in-memory 압축을 위한 함수는 compress()와 compress2()가 있다. //여기서는 압축 레벨을 정할 수 있는 compress2()를 사용해 보겠다. //Compression Level은 다음과 같이 정의되어 있다. //#define Z_NO_COMPRESSION 0 //#define Z_BEST_SPEED 1 //#define Z_BEST_COMPRESSION 9 //#define Z_DEFAULT_COMPRESSION (-1) //default 압축은 레벨 6 int err=compress2(outbuf, &OUTBUFSIZE, inbuf, INBUFSIZE, Z_DEFAULT_COMPRESSION); //int err=compress(outbuf, &OUTBUFSIZE, inbuf, INBUFSIZE); //Compress2함수는 다음과 같은 에러 코드를 반환한다. //compress2 returns Z_OK if success, //Z_MEM_ERROR if there was not enough memory, //Z_BUF_ERROR if there was not enough room in the output buffer //Z_STREAM_ERROR if the level parameter is invalid
샘플 예제는 vc6으로 되어 있습니다.
출처 : http://kaistizen.net/project/Zip/UtilityFunction.htm 에서 좀 더 자세한 내용을 볼 수 있습니다.
'프로그램언어 > C++' 카테고리의 다른 글
[Socket] bind socket error (0) | 2009.10.06 |
---|---|
[MFC] 출력창을 이용한 디버그 내용 출력. (0) | 2009.09.22 |
zlib 컴파일 에러발생. (0) | 2009.08.06 |
log4cxx 사용에 필요한 라이브러리 추출. (0) | 2009.07.31 |
[c++] template Class (0) | 2009.02.09 |