Deflate

使用LZ77算法与哈夫曼编码的无损数据压缩算法

Deflate(通常按早期计算机编程习惯写为DEFLATE)是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。它最初是由美國程式設計師菲尔·卡茨(Phil Katz)为他的PKZIP软件第二版所定义的,后来被RFC 1951标准化[1]

菲尔·卡茨及其所拥有的PKWARE, Inc英语PKWARE, Inc为该算法申请了美国专利5051745号[2]。人们普遍认为DEFLATE不受任何专利所覆盖,并且在LZWGIF文件格式使用)相关的专利失效之前,这种格式除了應用在ZIP文件格式中,也使用於gzip压缩文件以及PNG图像文件中。

DEFLATE压缩与解压的源代码可以在自由、通用的压缩函式庫zlib上找到。

7-zip實作了更高壓縮比的DEFLATE,AdvanceCOMP也使用這種實作,它可以对gzip、PNG、MNG以及ZIP文件进行压缩从而得到比zlib更小的文件大小。在Ken Silverman的KZIP与PNGOUT中使用了一种更加高效同时要求更多用户输入的DEFLATE程序。

串流格式编辑

Deflate串流是指比特串流。也即,我们首先把它看作字节串流,然后对每个字节,确定其比特顺序。对于X86这样的小端序平台,就是按照字节内部最不显著比特(Least Significant Bit) 到最显著比特(Most Significant Bit)的顺序。例如,对于字节0x15,它的比特序列是10101000。

Deflate串流包含一系列数据块。每块以3比特的头部开始:

  • 第1比特: Last-block-in-stream marker:
    • 1: 串流的最后一块
    • 0: 不是串流的最后一块
  • 第2、第3比特: 编码方法
    • 00: 无压缩的stored/raw/literal, 长度在0至65,535字节
    • 01: 静态霍夫曼压缩。采用事先定义(因而无须存储在串流中)的霍夫曼树
    • 10: 动态霍夫曼树
    • 11: 保留,未使用

编程接口编辑

Deflate可以免费在很多编程语言中使用。C语言通常使用zlib函式庫。C++语言可以使用7-Zip/AdvanceCOMP。Java语言包含在标准函式庫java.util.zip中。Microsoft .NET Framework 2.0包含在System.IO.Compression命名空间中。

参见编辑

参考文献编辑

外部链接编辑

🔥 Top keywords: Baike: 首页Special:搜索九龍城寨之圍城胖猫跳江事件Energy (組合)淚之女王背着善宰跑逆天奇案2金智媛习近平郭葦昀金秀賢 (男演員)不夠善良的我們九龍寨城邊佑錫伍允龍春色寄情人劉俊謙 (香港)張書偉怪獸8號虽然不是英雄葉乃文謝坤達神耆小子六四事件我的婆婆怎麼那麼可愛排球少年!!角色列表唐振剛2024年湯姆斯盃Seventeen (組合)蕭景鴻排球少年!!WIND BREAKER—防風少年—安東尼·愛德華茲 (籃球運動員)ILLIT中华人民共和国中華民國BABYMONSTER與鳳行張文傑BOYNEXTDOOR彭丽媛笑看風雲日本母亲节习明泽金惠奫徐巧芯從Lv2開始開外掛的前勇者候補過著悠哉異世界生活德雷克 (歌手)搜查班長1958支配物种乘風2024張員瑛承欢记嚴爵香港梅龍高速公路塌陷事故柯建銘葬送的芙莉蓮迷宮飯轉生貴族憑鑑定技能扭轉人生~繼承弱小領土後,招募優秀人才打造最強領土~为人民服务 (2022年电影)黃道十二宮IVE (組合)草榴社区歐倩怡沒有秘密周雨彤柯佳嬿無職轉生~到了異世界就拿出真本事~謝京穎埃马纽埃尔·马克龙破墓周處除三害 (電影)許瑋甯Twitter五月天打天下2逆天奇案李主儐大谷翔平家族榮耀之繼承者胡子彤郭晉安毛泽东Baike: 分類索引沈伯洋白紙運動文化大革命城市猎人 (2024年电影)2024年花蓮地震(G)I-DLE城市猎人朴成焄郭宁宁2024年優霸盃哥吉拉-1.0汤姆斯杯