紧缩算法 LZW

LZW紧缩算法的基本原理:提取原始文本文件数据中的差别字符,基于这些字符建立一个编译表,然后用编译表中的字符的索引来替换原始文本文件数据中的响应字符,削减原始数据大小
第一次完成的时刻是用C# 和js用于数据紧缩 ,当时刚毕业,是依据伪码写的,当时挺痛楚的,厥后想一想照样挺有意义的:)


#encoding = utf-8 import string def lzw_compress(s="ababcbababaaaaaaa"): """ 举行lzw 紧缩 """ dic = {} for i in string.ascii_letters: dic[i]=i result = '' key = s[0] #举行向后编码的起始值 dic_index = 129 for i in range(1,len(s)): v = s[i] key += v if dic.has_key(key): continue else: print key, dic[key] = unichr(dic_index) dic_index+=1 result += dic.get(key[0:-1]) #print key[0:-1],result.encode("utf-8") key = v return result r = lzw_compress() print "result is:" ,r.encode("utf-8")
ab ba abc cb bab baba aa aaa aaaa result is: ab*c*‚…*a**‡ˆ

感兴趣的同砚,能够写个解压的算法,有点像破译暗码,挺有意义的。注重基于编码表

    原文作者:edisonlz
    原文地址: https://segmentfault.com/a/1190000000344685
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞