前面已经写过一篇哈夫曼压缩,LZW字典压缩与哈夫曼压缩的不同之处在于不需要把编码写入文件,编码表是在读文件中生成的,首先将0-255个ASCLL码与对应的数字存入哈希表中,作为基础码表。如果不存在,将前缀+后缀所表示的字符串写入编码表编码,同时将前缀写入压缩文件中。两个字节所能表示的范围为0-65535。当我们的编码超过这份范围,就需要重置编码表,再重新编码。CW表示读取的到的字符,PW为上一行的CW,CW再编码表中存在:P→PW,C→CW的第一个字符,输出CW。不足之处:当编码超过65535的时候,并没有处理好,不能重置码表,还原出的文件在超过65535的部分就开始乱码。
暂无评论