gzip是一種數據格式,deflate是一種壓縮算法

gzip是一種數據格式,默認且目前僅使用deflate算法壓縮data部分;
deflate是一種壓縮算法,是huffman編碼的一種增強。

deflate與gzip解壓的代碼幾乎相同,能夠合成一塊代碼。
區別僅有:

deflate使用inflateInit(),而gzip使用inflateInit2()進行初始化,比 inflateInit()多一個參數: -MAX_WBITS,表示處理raw deflate數據。由於gzip數據中的zlib壓縮數據塊沒有zlib header的兩個字節。使用inflateInit2時要求zlib庫忽略zlib header。在zlib手冊中要求windowBits爲8..15,可是實際上其它範圍的數據有特殊做用,見zlib.h中的註釋,如負數表示raw deflate。
Apache的deflate變種可能也沒有zlib header,須要添加假頭後處理。即MS的錯誤deflate (raw deflate).zlib頭第1字節通常是0x78, 第2字節與第一字節合起來的雙字節應能被31整除,詳見rfc1950。例如Firefox的zlib假頭爲0x7801,python zlib.compress()結果頭部爲0x789c。

deflate 是最基礎的算法,gzip 在 deflate 的 raw data 前增長了 10 個字節的 gzheader,尾部添加了 8 個字節的校驗字節(可選 crc32 和 adler32) 和長度標識字節。python

相關文章
相關標籤/搜索