Skip to content

**** ****

for my bad memories..

libz를 이용한 스트링 압축하기


easyzlib은 libz 라이브러리를 이용하여 간단하게 스트링을 압축할 수 있는 API를 제공하는 라이브러리이다.

easyzlib는 아래에서 다운로드 가능함.
http://www.firstobject.com/easy-zlib-c++-xml-compression.htm

easyzlib.zip

아래에 간단하게 테스트해본 예제.

#include "easyzlib.h"

void main(void)
{
	char *source = "hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.aaaaaaaaaaaaa";
	char *compressed;
	long int compressedSize;
	compressed = malloc(EZ_COMPRESSMAXDESTLENGTH(strlen(source)));

	ezcompress( compressed, &compressedSize, source, strlen(source) );

	printf("source %d bytes\n", strlen(source));
	printf("compressed %d bytes\n", compressedSize);
	
	char *uncompressed;
	long int uncompressedSize;
	uncompressed = malloc(999999);

	//ezuncompress( uncompressed, &uncompressedSize, 
	//		compressed, compressedSize);
	ezuncompress( uncompressed, &uncompressedSize, 
			compressed, compressedSize);
	*(uncompressed+uncompressedSize) = '\0';
	
	printf("uncompressed %d bytes\n", uncompressedSize);
	printf("compressed \n%s\n", compressed);
	printf("uncompressed \n%s", uncompressed);

	free(compressed);
	free(uncompressed);
}
$ ./test.exe
source 409 bytes
compressed 28 bytes
uncompressed 409 bytes
compressed
x쑰H苽▒W(▒/▒I麒e(;
uncompressed
hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.hello world.aaaaaaaaaaaaa

Categorized as: Programming



답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다


이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.