2009-09-23 115 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),实际上文件比使用直拉链的文件要小,所以这里有些东西需要学习。

我不是说复制他们的代码或任何东西,但是看一些以前做过的事情通常可以让车轮转动,让你以不同的方式思考问题,这将帮助你获得一些前进的动力。