Gzip Byte Stream data 를 decompression 하기 위해 zlib 내장 모듈의 decompress 함수를 사용하는 예이다.
먼저 zlib.decompress 정의부터 살펴보자
zlib.decompress(data, 16 + zlib.MAX_WBITS)
zlib.decompress ( data [, wbits [, bufsize ] ] )
+ 압축된 데이터가 포함된 byte Object를 반환한 data의 바이트들을 압축해제한다.
+ wbits 항목은 data의 형식에 의존한다. 자세한 내용은 아래에서 살펴보자.
+ 만약 bufsize가 주어지면, output buffer의 크기를 초기화하는데 사용된다.
+ 오류가 발생하는경우 error exception이 발생한다.
wbits
+ wbits 변수는 history buffer( 혹은 window size)의 크기를 조정하고 어떤 헤더와 트레일러 포멧인지 예상한다.
+ compressobj() 항목과 유사하지만 값의 범위가 더 크다.
- +8 to +15 : Window size의 2진수 로그이다. input에는 반드시 zlib헤더와 trailer가 포함되어야 한다.
- 0 : zlib header 에 의해 자동적으로 결정되는 Window Size이다. zlib1.2.3.5 이상에서만 지원된다.
- -8 to -15 : Window size의 로그로서 wbits의 절대값을 사용한다. input은 반드시 헤더와 trailer가 포함되지 않은 raw stream 이여야 한다.
- +24 to +31 = 16 + ( 8 to 15 ) : 윈도우 크기로 로그값의 하위 4비트를 사용한다. input은 반드시 gzip 헤더와 trailer를 포함해야 한다.
- +40 to +47 = 32 + ( 8 to 15 ) : 윈도우 크기로 로그값의 하위 4비트를 사용한다. zlib이나 gzip 포맷을 자동으로 선택한다.
windowBits [참고]