压缩原理初探

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

总步骤分为六步:

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

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

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

第四、 将每个字符的哈弗曼编码连续写入,每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个带符号的数字存入文件中,以分隔符隔开,以便读取的时候可以识别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值