LZW压缩算法的基本原理:提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小
第一次实现的时候是用C# 和js用于数据压缩 ,当时刚毕业,是根据伪码写的,当时挺痛苦的,后来想想还是挺有意思的:)
感兴趣的同学,可以写个解压的算法,有点像破译密码,挺有意思的。注意基于编码表
第一次实现的时候是用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**感兴趣的同学,可以写个解压的算法,有点像破译密码,挺有意思的。注意基于编码表
本文介绍了LZW压缩算法的基本原理及其实现过程。通过提取文本文件中的不同字符并创建编译表,使用字符索引替代原文,从而达到压缩数据的目的。文章提供了Python实现示例,并邀请读者尝试编写解压算法。

被折叠的 条评论
为什么被折叠?



