压缩原理初探

系统 1747 0

这里讨论的仅仅是简单的字符压缩算法,对于更高级的文件压缩便是无能为力了。

总步骤分为六步:

第一、 统计全文中各种字符出现的次数;

第二、 根据每个字符出现不同的次数富裕权值并由此建立哈弗曼树;

第三、 根据哈夫曼树来对全文中每个字符进行哈弗曼编码;

第四、 将每个字符的哈弗曼编码连续写入,每8位截断,并计算出这8个0,1字节串所对应的字符并以字符串的形式存储编码后的字符;

第五、 将最后的不足8位的位数补足并记录补位的个数写入到文件中

第六、  将此哈弗曼树存储到文件末尾

 

将aaaaabbbbcccdde这段字符压缩成字节数更小的一段编码。

第一步:统计全文中各种字符出现的次数,

字符

a

b

c

d

e

出现次数

5

4

3

2

1

第二步:根据每个字符出现不同的次数富裕权值并由此建立哈弗曼树


压缩原理初探
 

 

第三步:哈弗曼树建立以后则可根据哈夫曼树来对全文中每个字符进行哈弗曼编码;

在这里数叉左边代表0右边代表1;

字符

a

b

c

d

e

哈弗曼编码

11

10

01

001

000

 

 第四步: 将每个字符的哈弗曼编码连续写入,每8位截断,并计算出这8个0,1字节串所对应的字符并以字符串的形式存储编码后的字符;

 

aaaaabbbbcccdde这段字符用哈弗曼编码表示则为111111111110101010010101001001000

这串01一共33位,则需要在后面补7个0再在最后记录补了7个0即可

则这段编码的对应的十进制编码为-1 -22 -107 36 0 7最后这个7是记录原编码最后补了7个0的意思。

 

第五步:将这6个带符号的数字存入文件中,以分隔符隔开,以便读取的时候可以识别。

压缩原理初探


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论