本文目录
- 1 DEFLATE算法的步骤
- 2 算法示例
- 3 算法应用
- 3.1 压缩字符串
- 3.2 压缩文件
DEFLATE算法是一种无损数据压缩算法,结合了LZ77压缩和Huffman编码。它广泛用于文件格式(如ZIP和PNG)中。
1 DEFLATE算法的步骤
(1)数据块分割:
- 将输入数据分成多个数据块(通常为256字节或更小),每个数据块可以独立压缩。
(2)LZ77压缩:
- 使用LZ77算法对每个数据块进行压缩。LZ77通过查找重复的字节序列来压缩数据。
- 创建一个滑动窗口(通常为32KB)以查找当前字节的匹配。
- 对于每个字节,输出匹配的偏移量和长度,或者直接输出字面值(literal)。
(3)Huffman编码:
- 对于LZ77的输出,统计各个符号(字面值和匹配)的出现频率。
- 使用这些频率构建Huffman树,并生成Huffman编码。
- 将LZ77输出的每个符号替换为其对应的Huffman编码。
(4)输出压缩数据: