我最近一直在研究用于数据压缩的LZW 算法。我已经了解编码算法,但是,我无法理解将编码数据转换回其原始形式的解码算法。
以下是从这里获取的解码器的伪代码
string entry;
char ch;
int prevcode, currcode;
...
prevcode = read in a code;
decode/output prevcode;
while (there is still data to read)
{
currcode = read in a code;
entry = translation of currcode from dictionary;
output entry;
ch = first char of entry;
add ((translation of prevcode)+ch) to dictionary;
prevcode = currcode;
}
我正在寻找此代码的分步说明。
编辑:我不明白的是:为什么我们有 3 个不同的字符串,即entry、prevcode和currcode?在我看来,一个应该是编码字符串,第二个应该是创建的输出字符串。那么第三个字符串在那里做什么呢?
其次,我真的不明白代码倒数第二行中(prevcode的翻译)+ch的目的。
谢谢。