關於 gzip, deflate, zlib, LZ77

LZ77: 是一種基於字典的無損數據壓縮算法(還有 LZ78, LZW 等) 算法

deflate: 也是一種數據壓縮算法,實際上就是先用 LZ77 壓縮,而後用霍夫曼編碼壓縮 函數

gzip: 是一種文件結構,也能夠算一種壓縮格式,經過 defalte 算法壓縮數據,而後加上文件頭和CRC校驗 編碼

zlib: 是一個提供了 deflate, zlib, gzip 壓縮方法的函數庫;也是一種壓縮格式(用 deflate 壓縮數據,而後加上 zlib 頭和 CRC 校驗) code

PHP 中的 zlib 擴展提供了對以上壓縮格式的支持,其中的函數和壓縮格式的對應關係以下: 接口

gzdeflate, gzinflate 對應 deflate ip

gzcompress, gzuncompress 對應 zlib 格式壓縮 string

gzencode, gzdecode 對應 gzip 格式壓縮 it

Python 中的 zlib 模塊也提供了上述壓縮格式的支持,不過接口很「隱晦」: 擴展

zlib.compress  對數據進行 zlib 格式壓縮,好像壓縮的時候只支持這一種格式,不過你能夠經過把壓縮後的數據去掉兩字節 zlib 頭和末尾 4 字節的 CRC 校驗獲得 deflate 格式的壓縮數據(zlib_compressed[2:-4]);對於 gzip 壓縮格式能夠經過 gzip 模塊獲得。 sed

zlib.decompress(string[,wbits[,bufsize]]) 解壓更折騰,壓縮格式是經過 wbits 參數控制的:

  • [8, 15]:解壓 zlib 格式的數據
  • [-8, -15]:解壓 deflate 格式數據
  • [16, 30]:解壓 gzip 格式數據

另外,對於 Apache 的頁面壓縮:

Content-Encoding: gzip 對應 gzip 格式壓縮

Cotent-Encoding: deflate 對應  deflate 壓縮

相關文章
相關標籤/搜索