zlib compress 예제

Skrevs fredagen den 2 augusti, 2019

IO ::압축 및 IO ::압축 해제 모듈은 압축 : Zlib에 대한 새로운 기능이 계획되지 않습니다 : 새로운 모듈은 압축 : Zlib가 하는 모든 일을하고 몇 가지. 압축에 개발::Zlib버그 수정으로만 제한됩니다. 이 함수는 메모리 내 gzip 파일의 압축을 해제하는 데 사용됩니다. 여기서 인수 데이터에는 압축할 바이트가 포함되어 있으며 수준은 값 -1 또는 0 ~ 9를 취할 수 있는 정수 값입니다. 이 매개 변수는 수준 1이 가장 빠르고 가장 낮은 압축 수준을 생성하는 압축 수준을 결정합니다. 수준 9는 가장 느리지만 가장 높은 수준의 압축을 생성합니다. 값 -1은 수준 6인 기본값을 나타냅니다. 기본값은 속도와 압축 사이의 균형을 가있습니다. 수준 0은 압축을 생성하지 않습니다. 이렇게 하면 기본 ”스트림” 작업 표기와 함께 zlib 기반 압축 알고리즘을 사용할 수 있으며 일부 메모리 스트림을 열고 <<데이터 작업을 수행하여 데이터를 쉽게 압축할 수 있습니다. zdict가 변경 가능한 개체(예: 바이트어레이)인 경우 압축 해제(compressobj)에 대한 호출과 압축 해제(compressor)의 첫 번째 호출(compressor)에 대한 첫 번째 호출 사이에 내용을 수정해서는 안 됩니다. 이 주셔서 감사합니다.

나는이 게시물이 4 살임을 깨달았지만 어쨌든 언급 할 것입니다 … 압축 및 인코딩 알고리즘에 대한 무지를 실례하지만 `압축 된 문자열`을 std::string으로 저장하고 나중에 검색하고 std ::string으로 압축 해제 할 수있는 방식으로 std::string을 압축하는 방법을 찾고 있습니다. 코드에서 이 작업을 가능합니까? 여기서는 요점을 놓치고 있지만 compress_string()에 대한 주석은 std:::string 반환 유형과 충돌하는 것 같습니다: /* 주어진 압축 수준으로 zlib를 사용하여 STL 문자열을 압축하고 이진 데이터를 반환합니다. */ 위의 코드에서 zlib.compress(…) 줄은 이름에서 알 수 있듯이 이 알고리즘이 제공하는 최상의 압축 수준을 제공하는 상수 Z_BEST_COMPRESSION를 사용합니다. 그런 다음 다음 원래 데이터의 길이에 대한 압축 된 데이터의 길이 비율을 기준으로 압축 수준을 계산합니다. 이 함수는 데이터 인수의 바이트를 압축 해제합니다. wbits 인수를 사용하여 기록 버퍼의 크기를 관리할 수 있습니다. 기본값은 가장 큰 창 크기와 일치합니다. 또한 압축 된 파일의 헤더와 트레일러의 포함을 요청합니다. 가능한 값은 다음과 같습니다: strlen은 infstream.total_out printf로 대체되어야 합니다(”압축되지 않은 크기는 %lun”, infstream.total_out);; printf(”압축되지 않은 문자열은 %.*sn”, infstream.total_out, c); 레벨을 0(압축 없음)으로 변경하면 5줄이 됩니다. 작성 할 때 압축 전략을 지정하려면 필터링 된 데이터에 대한 `f`, 허프만 전용 압축의 경우 `h`, 런 길이 인코딩의 경우 `R`을 부호.

전략이 지정되지 않은 경우 Z_DEFAULT_STRATEGY가 사용됩니다. 이 티모 주셔서 감사합니다. 이것은 나에게 시간의 무리를 저장. 나는 몇 가지 문제를 발견했다. #include 필요했습니다(memset). inflateInit (&zs)를 팽창Init2 (&zs, 16 + MAX_WBITS)로 변경하면 gzip 파일의 압축을 풀 수 있습니다. 위의 예제는 간단한 ”Hello world” 문자열을 압축하고 압축된 데이터를 ”outfile.txt”라는 파일에 저장합니다. ”outfile.txt” 파일은 텍스트 편집기로 열때 다음과 같이 보입니다: 플러시가 압축 비율을 심각하게 저하시킬 수 있으므로 압축 해제(Z_FINISH 사용)를 종료하거나 전체 플러시 지점을 만들려는 경우에만 사용해야 합니다(Z__ 사용) FULL_FLUSH). 체크섬을 계산하기 위해 zlib에서 두 가지 함수를 제공합니다. Perl 인터페이스의 경우 두 함수에서 두 매개 변수의 순서가 반전되었습니다.

이렇게 하면 실행 중인 체크섬과 하나의 오프 계산을 모두 수행할 수 있습니다. 보류 중인 모든 입력이 처리되고 나머지 압축 출력을 포함하는 바이트 개체가 반환됩니다.

Teater Kapija
Örmölla 321
SE-274 56 Abbekås

+46 (0)411 533 772
+46 (0)70 740 17 61

info@kapija.com
www.kapija.com