2011-04-06 114 views
6

我想製作自己的文本文件壓縮程序。我對C++編程知之甚少,但我已經學會了所有的基礎知識並編寫/讀取文件。 我在谷歌上搜索了很多關於壓縮的知識,並且看到許多不同類型的方法來壓縮像LZW和Huffman這樣的文件。問題是,他們大多數沒有源代碼,或者他們有一個非常複雜的。 我想問你是否知道我可以學習並製作壓縮程序的任何好網頁?使用C++進行文件壓縮

編輯: 我會讓這個話題開放一段時間,因爲我打算在接下來的幾天研究這個問題,如果我有任何問題,我會在這裏問問他們。

+2

使用或從zlib:http://zlib.net/讀取代碼以獲得良好開端。這是一個非常難的問題。 – Horus 2011-04-06 18:11:34

+2

所以你想寫自己的,但你想要一個壓縮算法的源代碼實現開始,而不是從算法描述自己實現它? – Rup 2011-04-06 18:11:53

回答

7

大部分算法都非常複雜。但他們都有共同點,他們正在採取重複的數據,只存儲一次,並有一個系統知道如何解壓縮它們(把重複的部分放回原處)

這是一個簡單的例子,你可以嘗試執行。

我們有這個數據文件

XXXXFGGGJJ

DDDDDDDDAA

XXXXFGGGJJ

在這裏,我們有重複字符和重複兩行。所以你可以從找到一種減少文件大小的方法開始。

這裏有一個簡單的壓縮算法。

4XF3G2J

8D2A

4XF3G2J

因此,我們有X,F之一,G 3的4等

+2

遊程編碼!對於有很多統一顏色(IFF-ILBM和BMP使用的圖像)的圖像效果很好,但由於您很少連續出現兩次以上的相同字符,所以對於文本沒有用處。 – EboMike 2011-04-06 18:18:06

+3

贊成,但一個很好的例子,開始:) – 2011-04-06 18:19:34

+0

RLE可能是最好的壓縮算法開始,因爲它是如此簡單(你可以在下午寫)。 – ssube 2011-04-06 18:25:53

8

你可以試試這個page它包含清楚地瞭解壓縮的基礎知識和第一條原則。

+1

這是一篇不錯的文章。 – Mat 2011-04-06 18:17:55

3

壓縮不是最容易的任務。我參加了一個大學課程,學習LZW和Huffman等壓縮算法,我可以告訴你他們並不那麼容易。如果C++是你的第一語言,並且你剛剛開始這樣的事情,我不建議嘗試編寫自己的排序算法。如果你更有經驗,那麼我會嘗試在沒有任何代碼提供給你的情況下編寫源代碼 - 這表明你真正理解了壓縮算法。

這就是我學習的方式 - 教授用非常寬泛的術語解釋了算法,然後我們可以實現它(使用Java,請介意),或者回答關於算法在某些情況下如何表現的問題。如果我們可以做到其中任何一個,那麼我們真的知道這個算法 - 沒有他向我們展示任何源代碼 - 這是一個很好的技能開發;)