例如目前的字典是:
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