完整解密關於1G的文件壓成1M的文件

論壇上有人問關於1G壓縮成1M的問題,正好我在網上看過有關此事的報導,特轉貼過來:
真有這麼神奇嗎?顯然是不太可能,如果真的可以壓縮到千分之一,那麼這款軟件要多麼神奇呀。

  1.常見文件壓縮

  首先我們用WinRAR的最高壓縮率對常見的文本文件、程序文件和多媒體文件進行壓縮,其壓縮結果如下(見圖1):

壓縮後分別還是挺大的

  從上圖可以看出,多媒體文件壓縮比最低,與原文件相差無幾,而文本文件和程序文件壓縮比要高一些,最高達到3:1,從實際經驗來看,我們平時常見的文件壓縮比都在10倍以下。

  那麼,再來看看這個RAR壓縮包(見圖2),注意其中的原文件大小和壓縮後的包裹大小分別為16777215和18407,這是多大的比例?筆者用計算器算了一下,約等於911:1,接近1000倍的壓縮比!這是怎麼回事?真的假的?跟我一起繼續做下面的試驗就明白了。

這個簡直是不可思議

  2.把大象裝進瓶子裡

  這裡筆者從自己的電腦裡隨便找了個文件「數字圖像噪聲和去除.htm」,這是筆者在瀏覽網頁時使用另存為功能從網上下載的文章,大小為125KB。
  
  第一步:壓縮為ZIP文件。右鍵單擊「數字圖像噪聲和去除.htm」文件,選擇「WinRAR→添加到檔案文件」,在壓縮選項對話框中選擇「檔案文件類型」為「ZIP」,「壓縮方式」為「最好」(見圖3),單擊「確定」開始壓縮。可以看到壓縮後的「數字圖像噪聲和去除.zip」文件只有19KB,壓縮率還不錯,不過仍離我們的目標相去甚遠。

第二步:用WinRAR打開「數字圖像噪聲和去除.zip」,記下「大小」列中顯示的原文件大小數值「127594」,打開計算器程序,單擊「查看」菜單選擇「科學型」,輸入數字「127594」,再點擊「十六進制」選項將其轉換為16進制值,結果是「1F26A」(見圖4)。

用科學型計算器認真算一下

 第三步:用UltraEdit編輯器打開「數字圖像噪聲和去除.zip」文件,我們要在文件中找到「1F26A」的數據,不過由於文件中的十六進制數是高低位倒置表示的,所以我們要查找的數據就變成了「6AF201」,單擊「搜索」菜單中的「替換」,將文件中的「6AF201」替換為「FFFFFF」(見圖5),共替換兩處,文件開頭和結尾各一處,替換後保存文件修改。

替換數值

小提示

  我們前面之所以要選擇ZIP壓縮格式,而不是直接使用RAR壓縮格式,是因為WinRAR對RAR格式的CRC檢驗非常嚴格,對文件進行任何修改都會提示壓縮錯誤,而使用ZIP格式壓縮,修改後再用WinRAR打開時不會進行嚴格的CRC檢驗,沒有任何錯誤提示。

  第四步:現在再用WinRAR打開「數字圖像噪聲和去除.zip」文件,你會驚奇地發現,壓縮包中顯示的原文件體積達到了16777KB(見圖6),也就是16MB!現在你明白我們第三步中所做修改的目的了吧,我們就是要把原文件從「蟋蟀」變成「大象」!而且,現在你把壓縮包中的「數字圖像噪聲和去除.htm」文件解壓出來,其文件體積仍然是16MB,而且可以正常打開瀏覽。

謎底揭曉了
第五步:接下來就很簡單了,把這個修改後的ZIP格式變成RAR格式即可,如果用WinRAR「工具」菜單中的「轉換檔案文件格式」功能轉換後的壓縮比會稍微縮小,這裡我們直接將「數字圖像噪聲和去除.zip」改名為「數字圖像噪聲和去除.rar」,就做成了最開始看到的那個超級壓縮包。

  3.文件壓縮原理

  文件壓縮分為有損壓縮和無損壓縮兩種,我們常用的WinRAR、WinZip都是屬於無損壓縮,其基本原理都是一樣的,簡單地說也就是把文件中的重複數據用更簡潔的方法表示,例如一個文件中有1000個字母A,那麼這將佔用1KB的數據空間,如果用壓縮算法就可以用1000A來表示,那麼它只需要5個字節的數據空間,壓縮比達到了200倍。

  那麼由此看來,1000倍甚至更高倍的壓縮比是可以實現的,但要求源文件必須有足夠多的重複數據。不過,我們平時使用的文件都不可能是這樣的,所以通常文件壓縮比都在10倍以下,如果某個軟件聲稱對任何文件都能夠產生這種超高壓縮比的話,那它肯定就是具有欺騙性質的了。


  小編有話說:很多網上下載的文件只有300MB或400MB,但是解壓後,居然可以達到2GB甚至更多,也許你會奇怪,為什麼你用WinRAR壓縮同樣的文件,就沒有這樣的壓縮效果呢?其實這是因為這些文件是用多款不同的壓縮軟件進行壓縮的,用壓縮音頻最好的壓縮軟件壓縮音頻文件,用壓縮動畫最好的壓縮軟件壓縮動畫文件。而且在壓縮時所選的參數也是最佳的,這樣也就保證了最後生成的壓縮文件是最小的。
arrow
arrow
    全站熱搜

    alex0126 發表在 痞客邦 留言(1) 人氣()