2013-10-21 45 views
0

我試圖使用LZW壓縮方法(在下面的鏈接提供的代碼)來壓縮zip文件壓縮ZIP文件,使用LZW compresion創建了一個過大尺寸的壓縮文件

http://rosettacode.org/wiki/LZW_compression#C

它創建編碼文件長度由於文件大小太長,這是什麼原因? 請有人幫助我瞭解實時發生的事情。

+2

什麼,你嘗試壓縮已經壓縮的文件?這很可能會創建一個比原始文件更大的文件,因爲它不能被壓縮更多,再加上壓縮器將元數據添加到輸出文件。 –

+0

哪種方法優先壓縮任何二進制數據流? – user2902744

+0

二元不相關。關鍵的問題是,ZIP壓縮去除了原始文件中的大部分冗餘數據,因此不再需要壓縮。 –

回答

1

無損壓縮不可能將文件壓縮到較短的文件。

這是因爲有256 Ñ文件,這些文件Ñ字節長,但也有(256 Ñ -1)/ 255個文件是短於Ñ字節。因此,並非每個文件都可以映射到較短的文件。

不僅如此,如果任何文件變得越來越短,那麼一些較短的文件不得不放棄它的位置來使這成爲可能。所以一些文件必須變大。

無損壓縮通過識別人類創建的典型文件中的常見模式並將長的高概率序列的字節轉換爲較短的序列來工作。這個價格是一些序列變長。設計的目標是使典型文件壓縮,但非典型文件必須更長。

如果壓縮完成其作業,則會從文件中刪除冗餘信息,並且輸出與隨機數據類似。然後輸出不能被進一步壓縮。