※ 引述《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的編碼來得大。
當然這只是一個很粗略的方法。
其它還有像是霍夫曼編碼這種比較嚴謹的編碼方式。
有興趣的話可以上網查查資料,
在此我就不贅述了。
最後還有一點要補充 。
或許會有人想說,
如果壓縮的內容不同 ,編碼不就可能不一樣了,
那我在解壓縮的時候
怎麼知道你哪個字是編成什麼碼?
為了解決這個問題,
所以其實在檔案壓縮後會自動附帶一個「解碼表」,讓解壓縮端知道要如何去解壓縮這個
檔案。
所以當我們要壓縮的檔案太小的時候
因為必須加上「解碼表」的大小
遇到壓縮後的檔案比原本的檔案大也是有可能的。