2009-09-23 116 views
0

我想提煉我的C技巧,並一直想着寫我自己的zip和解壓縮程序。這似乎在很多領域,CPU /硬盤/內存。建立一個壓縮壓縮器/解壓縮器來提煉C技巧

我從哪裏開始?是否有壓縮和解壓縮的流程圖?這種類型的項目太複雜了嗎?

一本很好的書,通過所有步驟採取步驟或網站?

我想知道是否有人有這個或任何其他建議任何良好的資源。

+0

只有一個問題的答案,我張貼這個評論,但我認爲這是一個學習項目的好主意。根據你以前的C語言經驗,這可能過於雄心勃勃,但這是一個相當明確定義的問題,解決它的程序可以在你遇到困難時查看。另外,你有一個簡單的方法來驗證它是否工作。 – 2009-09-23 19:10:23

+0

注意:一旦你到了可以讓你自己的程序工作來解壓和壓縮它自己的文件的地步,下一步就是讓它與其他程序兼容(即解壓縮它沒有創建的zip文件,並有其他程序壓縮它創建的文件)。就具有互操作性問題的實際編程而言,這是值得的。 – Brian 2009-09-23 19:51:56

回答

2

您可能需要閱讀關於維基百科的Huffman encoding。編碼非常簡單,你可以通過它實現某種程度的壓縮。這種壓縮算法將幫助您處理鏈表,內存分配 - 重新分配以及正確選擇數據結構。

如果你想實現的東西非常簡單,只需要實現Run Length Encoding.

+0

+1用於提示霍夫曼編碼和運行長度編碼,因爲它們都是學習的好選擇。 – Brian 2009-09-23 19:50:25

1

另外的建議,以防萬一你正在尋找更困難的事情。

該程序Crinkler專門從事壓縮小型可執行文件。關於它是如何工作的,這裏是info

1

ZIP是兩件事情,一個文件封裝格式和一個(組)壓縮算法的組合。第一個有點平淡無奇,但會磨練你的搗蛋技能,第二個更有趣和先進。

我記得不得不在C語言中實現LZW編碼和解碼以讀取和寫入GIF文件。這將是一個很好的項目,因爲LZW壓縮非常聰明 - 我認爲我認爲值得擁有專利的唯一算法之一,並且比ZIP更具可實現的目標

0

您可能想要看一看在Zip,Gzip,Bzip和7-Zip等開源應用程序中,這些應用程序在整個壓縮文件上實現了自己的變體。特別是7-Zip有自己的壓縮格式(7z),實際上文件比使用直拉鍊的文件要小,所以這裏有些東西需要學習。

我不是說複製他們的代碼或任何東西,但是看一些以前做過的事情通常可以讓車輪轉動,讓你以不同的方式思考問題,這將幫助你獲得一些前進的動力。