现在的位置: 首页 > 综合 > 正文

LZW理解

2013年05月23日 ⁄ 综合 ⁄ 共 756字 ⁄ 字号 评论关闭

例如目前的字典是:
0  a
1  b
要解码的数据是:012436
=================================

译码过程:《主要是先输出当前编码,然后和上一个输出决定当前的纳入的词典》
步骤  代码    词典          输出
           (0) A  
           (1) B    
1    (0)    -- --             A
2    (1)   (2) AB          B  (将AB纳入字典,上一个输出A和这一次输出的第一个B 纳入字典,AB=3)
3    (2)   (3) BA          AB (将BA纳入字典,上一个输出B和这一次输出的第一个A 纳入字典,BA=4)
4    (4)   (4) ABA        ABA (4没有出现,将上一个输出和他的第一个元素输出,并纳入字典)
5    (3)   (5) ABAB      BA
6    (6)   (6) BAB        BAB

 

对第4个,当前字典应该是上一个ABx连接当前输出的第一个元素,而当前的字典和输出相等,而输出的第一个字符是A,所以ABx就是ABA

=================================================

对输出进行编码测试
ABABABABABAB
0=A 1=B AB=2 BA=3 ABA=4 ABAB=5 BAB=6 与译码字典一致

 

编码过程很简单,先将字典写出来

0=A 1=B

取字符串的第一个和第二个AB,AB不在字典,故将2=AB纳入字典。

取BA,BA不在字典,3=BA纳入字典

取AB,AB在字典,取ABA,不在字典,将4=ABA纳入字典

从4=ABA的最后一个开始取,应该是AB,再取是ABA,再取ABAB,不在字典,5=ABAB

从5=ABAB的最后一个开始取,BA(已在字典),再取BAB=6

 

【上篇】
【下篇】

抱歉!评论已关闭.