Deflate
Deflate(通常照早期計算機編程習慣寫為DEFLATE)同時使用矣 LZ 七十七算法佮哈夫曼編碼(Huffman Coding)的一个無損數據壓縮算法。伊上頭仔是由美國程式設計師菲爾 ・ 卡茨(Phil Katz)為伊的 PKZIP 軟體第二版所定義的,後來去予 RFC 一千九百五十一標準化。
菲爾 ・ 卡茨佮其實所有的 PKWARE , Inc 為該算法申請了美國專利五百空五十一千七百四十五號。人普遍認為講 DEFLATE 無受任何專利所崁,並且佇咧 LZW(GIF 文件格式使用)相關的專利失效進前,這種格式除了佇 ZIP 文件格式內底得著應用以外嘛佇咧 gzip 壓縮文件佮 PNG 圖像文件中間得著應用。
DEFLATE 壓縮佮解壓的原始碼會當佇自由、通用的壓縮庫 zlib 揣著。
閣較高壓縮率的 DEFLATE 嘿七-zip 所實現的。AdvanceCOMP 嘛使用這種實現,伊會當嘿 gzip、PNG、MNG 以及 ZIP 文件進行壓縮得著比 zlib 閣較細的文件大細。佇咧 Ken Silverman 的 KZIP 佮 PNGOUT 中使用了一種閣較高效同時要求閣較濟用戶輸入的 DEFLATE 程序。
流格式
Deflate 流是講比特流。嘛即,阮第一阮就先共看做字節流,然後對每一个字節,確定其比特順序。對於 X 八十六按呢的小端序平台,伊就是按照字節內底上袂顯示比特(Least Significant Bit)到上衝著比特(Most Significant Bit)的順序。比如講,對字節零 x 十五,伊的比特序列是一千空一十分零一千。
Deflate 流包含一系列數據塊。逐塊以三比特的頭殼開始 :
- 第一比特 : Last-block-in-stream marker :
- ` 一 ` : 流的最後一塊
- ` 零 ` : 毋是流的上尾仔一塊
- 第二、第三比特:編碼方法
- ` 零 ` : 沒有壓縮的 stored / raw / literal , 長度佇咧零至六十五 , 五百三十五位元組
- ` 一 ` : 靜態霍夫曼壓縮。用事先定義(因為無愛儉佇咧流內底)的霍夫曼樹
- ` 十 ` : 動態霍夫曼樹
- ` 十一 ` : 保留,沒使用
編程接口
Deflate 會當免費佇足濟程式語言內底用。C 語言通常使用 zlib 庫。C + + 語言會當使用七-Zip / AdvanceCOMP。Java 語言包含佇標準庫 java . util . zip 中。Microsoft . NET Framework 二嬸零包含佇咧 System . IO . Compression 號名空間內底。
- PKZIP : 該算法上早的實現。
- zlib / gzip : 標準參考實現(standard reference implementation), 因為其公共可用性,得著佮其廣泛的使用。
- Crypto + + : C + + 開源實現 .
- 七-Zip / AdvanceCOMP : Igor Pavlov 的 C + + 開源自由實現
- PuTTY『sshzlib . c』: 一份單獨實現
- Plan 九 from Bell Labs 的 libflate
- Hyperbac : C + + 佮彙編實現
- Zopfli : Google 的 C 實現
參見
- 歸檔格式列表
- 壓縮軟體列表
- 壓縮軟體較
參考文獻
外部連結
- PKWARE , Inc .'s ` appnote . txt ` , _ . ZIP File Format Specification _ ; Section 十 , _ X . Deflating–Method 八 _ .
- RFC 一千九百五十一–_ Deflate Compressed Data Format Specification version 一孵三 _
- zlib Home Page
- _ An Explanation of the Deflate Algorithm _–by Antaeus Feldspar
- _ Extended Application of Suffix Trees to Data Compression _–an excellent algorithm to implement Deflate by Jesper Larsson