WinRAR是採用它自己的獨創的壓縮演算法。【希望你能看看最優二叉樹(哈夫曼樹),理解哈夫曼編碼的原理,對你的這個壓縮演算法會有很明晰的指導和解惑作用】WinRAR是採用它自己的獨創的壓縮演算法。壓縮處理都是以二進位制的方式進行的。這和你的編碼有關。只要是處理後的結果比原文件檔案小,而且是可逆的還原,就是無壓縮。壓縮率的大小和你的編碼方式有關。無失真壓縮是指重構壓縮資料(還原,解壓縮),而重構資料與原來資料完全相同。該方法用於那些要求重構訊號與原始訊號完全一致的場合,如文字資料、程式和特殊應用場合的影象資料(如指紋影象、醫學影象等)的壓縮。這類演算法壓縮率較低,一般為1/2~1/5。典型的無失真壓縮演算法有:Shanno-Fano編碼、Huffman(哈夫曼)編碼、算術編碼、遊程編碼、LZW編碼等。基於哈夫曼編碼原理的壓縮演算法:哈夫曼演算法的過程為:統計原始資料中各字元出現的頻率;所有字元按頻率降序排列;比如有一個字串:aaaaaaaaaabbbbbbcccd原檔案大小儲存需要20個位元組。如果按頻率出現的次數高低,給予字串中的每個字元不同的編碼長度,就可以達到壓縮的目的。如a編碼為01(佔用2個bit)b編碼為00(佔用2個bit)c編碼為000,(佔用3個bit)c編碼為001,(佔用3個bit)那就壓縮後的總長為(2*10+2*6+3*3+1*3)/8 =5.5個位元組。另外在解碼的時候,要告之對方你的編碼方式,需要把編碼的規則傳遞過去。如果對於以上字串,你也可以按aaaaaaaaaa編碼成一個1,bbbbbb為2,ccc為3,d為4。這樣壓縮後的內容為最小,但是要注意一點,這時你的編碼規則為最大,你要把你的編碼規則發給對方的時候,有可能編編解碼規則檔案可能會比壓縮後的內容還要大。最終結果為造成壓縮後的檔案比原檔案還要大。
WinRAR是採用它自己的獨創的壓縮演算法。【希望你能看看最優二叉樹(哈夫曼樹),理解哈夫曼編碼的原理,對你的這個壓縮演算法會有很明晰的指導和解惑作用】WinRAR是採用它自己的獨創的壓縮演算法。壓縮處理都是以二進位制的方式進行的。這和你的編碼有關。只要是處理後的結果比原文件檔案小,而且是可逆的還原,就是無壓縮。壓縮率的大小和你的編碼方式有關。無失真壓縮是指重構壓縮資料(還原,解壓縮),而重構資料與原來資料完全相同。該方法用於那些要求重構訊號與原始訊號完全一致的場合,如文字資料、程式和特殊應用場合的影象資料(如指紋影象、醫學影象等)的壓縮。這類演算法壓縮率較低,一般為1/2~1/5。典型的無失真壓縮演算法有:Shanno-Fano編碼、Huffman(哈夫曼)編碼、算術編碼、遊程編碼、LZW編碼等。基於哈夫曼編碼原理的壓縮演算法:哈夫曼演算法的過程為:統計原始資料中各字元出現的頻率;所有字元按頻率降序排列;比如有一個字串:aaaaaaaaaabbbbbbcccd原檔案大小儲存需要20個位元組。如果按頻率出現的次數高低,給予字串中的每個字元不同的編碼長度,就可以達到壓縮的目的。如a編碼為01(佔用2個bit)b編碼為00(佔用2個bit)c編碼為000,(佔用3個bit)c編碼為001,(佔用3個bit)那就壓縮後的總長為(2*10+2*6+3*3+1*3)/8 =5.5個位元組。另外在解碼的時候,要告之對方你的編碼方式,需要把編碼的規則傳遞過去。如果對於以上字串,你也可以按aaaaaaaaaa編碼成一個1,bbbbbb為2,ccc為3,d為4。這樣壓縮後的內容為最小,但是要注意一點,這時你的編碼規則為最大,你要把你的編碼規則發給對方的時候,有可能編編解碼規則檔案可能會比壓縮後的內容還要大。最終結果為造成壓縮後的檔案比原檔案還要大。