一、LZW编码原理和实现算法
LZW的编码思想是不断地从字符流中提取新的字符串,通俗地理解为新
“
词条
”
,然 后用“
代号
”
也就是码字表示这个
“
词条
”
。这样一来,对字符流的编码就变成了用码字去替 换字符流,生成码字流,从而达到压缩数据的目的。LZW
编码是围绕称为词典的转换表来完成的。LZW
编码器通过管理这个词典完成输入与输出之间的转换。
LZW
编码器的输入是字符流,字符流可以是用8
位
ASCII字符
组成的字符串,而输出是用
n
位
(
例如
12
位
)
表示的码字流。
编码算法步骤
步骤
1
:将词典初始化为包含所有可能的单字符,当前前缀
P
初始化为空。
步骤
2
:当前字符
C=
字符流中的下一个字符。
步骤
3
:判断
P
+
C
是否在词典中
(
1
)如果
“
是
”
,则用
C
扩展
P
,即让
P=P
+
C
,返回到步骤
2
。
(2)如果