文本压缩的几种方法

文本压缩的几种方法

关键字编码

在数学表示中,我们会遇到 a = 1, b > 2 等一系列数学语言,在我们理解这些数学符号时,其实我们正在“解码”的过程中。
一篇文章中,如果多次出现 “apple”,我们就可以约定 “#” 等于 “apple”,于是 “this is an apple” 就是 “this is an #”,这样就减小了文本内容的大小,类似的编码方式,我们就称为关键字编码。

行程长度编码

一篇文章中,如果多次出现重复的内容,我们可以采用缩短“行程长度”的思想来减少文本内容。如 “AAAAA”,我们可以表示为 “5-A”,“111111”可以表示为“6-1”。
“行程长度编码”我们也称为“迭代编码”。

赫夫曼编码

赫夫曼编码是以它的创建者 David Huffman 博士的名字命名的。赫夫曼编码使用不同长度的位串来表示不同的字符,一些常用的字符用较短的位串表示,不常用的字符用较长的位串表示,这样我们在日常文本传输中就可以大大减少传输的位串数目。
常见的字符编码方式如 ascii 编码和 utf-16(就是我们常说的 unicode 编码)是定长编码,utf-8 则是变长编码。utf-16 和 utf-8 都能表示世界上几乎所有的字符。

现在有一个问题,赫夫曼编码是变长的,那我们怎么区分一个字符的位串长度呢?

赫夫曼编码的重要特征就是:表示一个字符的位串不会是表示另一个字符的位串的前缀,所以只要按对应的位串表逐一扫描,就能精确的确定每一个字符。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值