C++ 使用C++;

C++ 使用C++;,c++,compression,C++,Compression,我想做我自己的文本文件压缩程序。我对C++编程了解不多,但我已经学习了所有的基础知识和编写/阅读文件。 我在谷歌上搜索了很多关于压缩的内容,看到了很多不同的压缩文件的方法,比如LZW和Huffman。问题是它们中的大多数没有源代码,或者它们有一个非常复杂的源代码。 我想问你是否知道有什么好的网页,我可以在那里学习并自己制作压缩程序 编辑: 我会让这个话题再开放一点,因为我计划在接下来的几天里研究这个问题,如果我有任何问题,我会在这里问他们。大多数算法都非常复杂。但它们都有一个共同点,即它们获取重

我想做我自己的文本文件压缩程序。我对C++编程了解不多,但我已经学习了所有的基础知识和编写/阅读文件。 我在谷歌上搜索了很多关于压缩的内容,看到了很多不同的压缩文件的方法,比如LZW和Huffman。问题是它们中的大多数没有源代码,或者它们有一个非常复杂的源代码。 我想问你是否知道有什么好的网页,我可以在那里学习并自己制作压缩程序

编辑:
我会让这个话题再开放一点,因为我计划在接下来的几天里研究这个问题,如果我有任何问题,我会在这里问他们。

大多数算法都非常复杂。但它们都有一个共同点,即它们获取重复的数据,只存储一次,并且有一个知道如何解压的系统(将重复的数据段放回原位)

下面是一个可以尝试实现的简单示例

我们有这个数据文件

xxxxfggjj

ddddddaa

xxxxfggjj

这里有重复的字符和两行重复的字符。因此,您可以从找到减少文件大小的方法开始

这里有一个简单的压缩算法

4XF3G2J

8D2A

4XF3G2J


所以我们有4个X,1个F,3个G等等。

你可以试试这个。它包含了压缩的基础知识和第一原理的清晰介绍。

压缩不是最简单的任务。我参加了一个大学课程来学习像LZW和Huffman这样的压缩算法,我可以告诉你,它们并不那么容易。如果C++是你的第一语言,你刚刚开始进入这种状态,我不会建议尝试编写你自己的排序算法。如果您更有经验,那么我会尝试在不提供任何代码的情况下编写源代码-这表明您真正了解压缩算法


这就是我被教授的方式——教授用非常宽泛的术语解释了算法,然后我们要么实现它(记住,用Java),要么回答关于算法在特定情况下如何运行的问题。如果我们能做到这两件事中的任何一件,那么我们就真的知道了算法——他根本没有向我们展示任何来源——这是一项很好的发展技能;)

哈夫曼编码树并不太复杂,我从它们开始。这里有一个链接:

使用或阅读zlib中的代码:以获得良好的开端。这是一个非常困难的问题。所以你想自己写,但你想从压缩算法的源代码实现开始,而不是从算法描述开始自己实现?运行长度编码!适用于具有大量统一颜色的图像(IFF-ILBM和BMP使用了它),但对于文本没有多大用处,因为同一字符的连续出现次数很少超过两次。是的,但一个很好的开始示例:)RLE可能是最好的压缩算法,因为它非常简单(你可以在一个下午写出来)。我想你展示的东西对图像最有效,但无论如何还是要谢谢你,因为我计划稍后制作图像压缩程序。