跳至內容

Deflate

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 11:12 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

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