※ 引述《flower42 (loop)》之铭言:
: 压缩档顾名思义让档案变小
: 变得更好传输
: 有去google但是有点难懂
: RAR压缩档的原理到底是什么的八卦?
不知道原Po是不是真得想要钓鱼
不过最近刚好有学到这一块就来现学现卖认真回一下
如有错误 还请各位纠正
压缩档案顾名思义就是将原有的档案的大小缩小
档案的大小缩小除了可以让D槽存更多片片外,在网络上的传输也很重要。
早期网络不发达时频宽不足 ,
传些小东西就要花很长的时间,
如果能将档案变小 ,那就可以省下不少的时间了。
而就算到了今天,
网络发展让大多数人都不需要为频宽不足而烦恼,
却也还有行动网络的存在,
档案小也意味着传输时耗费的网络流量较小。
由此可见压缩的技术在档案的保存和传输上有多大的影响。
接着进入正题
其实压缩的技术千百种,
不同的公司也有自己的算法,
但其实都不会脱离一个大概念
就是将资料从新编码。
举个例子来说 ,
假设我们现在要压缩的是一段英文的纯文字:
GGININDER
在这里我先用个我流的压缩规则来讲解:
当遇到字母时如果是还没遇过的就给予一个数字的编号
如果是遇过的就用同一个编号 并用二进制表示
用这个规则的话 原本的文字压缩后就会变成
0 0 1 10 1 10 11 100 101
G G I N I N D E R
(手机排版 如果有跑掉还请见谅)
或许这看起来跟原本差不多,
不过我们要知道的是 ,
不论是用ASCII(一个字母1 byte)或是unicode(一个字母4byte)做为文字的编码 ,
都比我们上面最多只用到3bit的编码来得大。
当然这只是一个很粗略的方法。
其它还有像是霍夫曼编码这种比较严谨的编码方式。
有兴趣的话可以上网查查资料,
在此我就不赘述了。
最后还有一点要补充 。
或许会有人想说,
如果压缩的内容不同 ,编码不就可能不一样了,
那我在解压缩的时候
怎么知道你哪个字是编成什么码?
为了解决这个问题,
所以其实在档案压缩后会自动附带一个“解码表”,让解压缩端知道要如何去解压缩这个
档案。
所以当我们要压缩的档案太小的时候
因为必须加上“解码表”的大小
遇到压缩后的档案比原本的档案大也是有可能的。