任何文件(图像、文本、程序等),在计算机中的保存方式都是以二进制字节为单位保存。而且,很多时候,要表达的内容存在一定的逻辑重复性,是否可以采取一种算法,尽量减小数据的冗余性,这就是压缩。RLE是一种相对简单的算法,核心就是用字符*重复次数,eg:AAAAAABBCDDEEEEF表述为A6B2C1D2E5F1,要缩率为12/17等于百分之七十。
莫尔斯码,只得是根据印刷行业的印刷活字数目比例,对各字符用不同长度的二进制来表示。而哈夫曼码则不同,它可以根据文件内容的不同,采取特定的二进制表示,由于每个字符会被不同的代码表示,因此,可以省去用于表达空格的表示码。
二叉树是一种用于生成哈夫曼编码的方法,首先根据文件中各字符中出现频率的高低依次排列,然后画二叉树,最后根据二叉树完成编码操作,实践证明,哈夫曼编码方式可以有效的提高压缩比。
压缩分两种:可逆压缩和非可逆压缩,对于图像,在人们要求不是很高,在满足人类视觉需求的前提下,可以采取适当的不可逆压缩算法如MPEG等,而文本文件采取的是非可逆压缩,不然万一写给女孩子的信,压缩上传后,我爱你,中间的爱被压缩后恢复不会来,岂不是很尴尬