我想製作自己的文本文件壓縮程序。我對C++編程知之甚少,但我已經學會了所有的基礎知識並編寫/讀取文件。 我在谷歌上搜索了很多關於壓縮的知識,並且看到許多不同類型的方法來壓縮像LZW和Huffman這樣的文件。問題是,他們大多數沒有源代碼,或者他們有一個非常複雜的。 我想問你是否知道我可以學習並製作壓縮程序的任何好網頁?使用C++進行文件壓縮
編輯: 我會讓這個話題開放一段時間,因爲我打算在接下來的幾天研究這個問題,如果我有任何問題,我會在這裏問問他們。
我想製作自己的文本文件壓縮程序。我對C++編程知之甚少,但我已經學會了所有的基礎知識並編寫/讀取文件。 我在谷歌上搜索了很多關於壓縮的知識,並且看到許多不同類型的方法來壓縮像LZW和Huffman這樣的文件。問題是,他們大多數沒有源代碼,或者他們有一個非常複雜的。 我想問你是否知道我可以學習並製作壓縮程序的任何好網頁?使用C++進行文件壓縮
編輯: 我會讓這個話題開放一段時間,因爲我打算在接下來的幾天研究這個問題,如果我有任何問題,我會在這裏問問他們。
大部分算法都非常複雜。但他們都有共同點,他們正在採取重複的數據,只存儲一次,並有一個系統知道如何解壓縮它們(把重複的部分放回原處)
這是一個簡單的例子,你可以嘗試執行。
我們有這個數據文件
XXXXFGGGJJ
DDDDDDDDAA
XXXXFGGGJJ
在這裏,我們有重複字符和重複兩行。所以你可以從找到一種減少文件大小的方法開始。
這裏有一個簡單的壓縮算法。
4XF3G2J
8D2A
4XF3G2J
因此,我們有X,F之一,G 3的4等
壓縮不是最容易的任務。我參加了一個大學課程,學習LZW和Huffman等壓縮算法,我可以告訴你他們並不那麼容易。如果C++是你的第一語言,並且你剛剛開始這樣的事情,我不建議嘗試編寫自己的排序算法。如果你更有經驗,那麼我會嘗試在沒有任何代碼提供給你的情況下編寫源代碼 - 這表明你真正理解了壓縮算法。
這就是我學習的方式 - 教授用非常寬泛的術語解釋了算法,然後我們可以實現它(使用Java,請介意),或者回答關於算法在某些情況下如何表現的問題。如果我們可以做到其中任何一個,那麼我們真的知道這個算法 - 沒有他向我們展示任何源代碼 - 這是一個很好的技能開發;)
霍夫曼編碼樹不是太複雜,我會開始他們。這裏有一個鏈接:Example: Huffman Encoding Trees
使用或從zlib:http://zlib.net/讀取代碼以獲得良好開端。這是一個非常難的問題。 – Horus 2011-04-06 18:11:34
所以你想寫自己的,但你想要一個壓縮算法的源代碼實現開始,而不是從算法描述自己實現它? – Rup 2011-04-06 18:11:53