6.4通过莫尔斯编码来看哈夫曼算法的基础
哈夫曼算法是1952年提出的压缩算法,日本人常用的压缩软件LHA使用的就是哈夫曼算法。
文本文件是由不同类型的字符组合而成的,而且不同的字符出现的次数也是不同的。
注!:不管是不满8位的数据,还是超过8位的数据,最终都要以8位为单位保存到文件中。
因为磁盘是以字节(8位)为单位保存数据的。
1看作是短点(嘀),把11看作是长点(嗒)。
莫尔斯编码把一般文本中出现频率高的字符用短编码来表示。
如表6-2所示,假设表示短点的位是1,表示长点的位是11的话,那么E(嘀)这一字符的数据就可以用1位的1来表示,C(嗒嘀嗒)这一字符的数据就可以用9位的110101101来表示。在实际的莫尔斯编码中,如果短点的长度是1长点的长度就是3,短点和长点的间隔就是1。
这里的长度指的是声音的长度。接下来,就让我们尝试一下用莫尔斯编码来表示前面提到的AAAAAABBCDDEEEEEF这个17个字符的文本。在莫尔斯编码中,各个字符之间需要加人表示间隔的符号。这里我们用00来进行区分。因此,AAAAAABBCDDEEEEEF 这个文本,就变成了Ax6次+Bx2次+Cx1次+Dx2次+Ex5次+Fx1次+字符间隔x16=4位X6次+8位x2次+9位x1次+6位x2次+1位x5次+8位x1次+2位*16次=106位14字节。
因为文件只能以字节为单位来存储数据,因此不满1字节的部分就要圆整成1个字节。如果所有字符占用的空间都是1个字节(8位),这样文本中列出来的17个字符=17字节,那么摩尔斯电码的压缩比率就是14-17与82%,并不太突出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗