以前在学信息论与编码的时候,最后的课程设计是通信系统模拟。虽然我的课程设计成绩在同学当中并不算低,但我似乎没有做好,有点遗憾。这几天来因为对VC++网络编程感兴趣,所以逐渐的在触碰着以前信息论学过的东西。就拿今天,不,应该说是昨天来说吧,几乎从一起床到现在,都在做编码的事情。今天一共做了两个编码,一个是哈夫曼编码,一个是游程编码。其中游程编码可以说是无意中做的,因为哈夫曼编码做出来后,由于“学艺不精”,不知压缩为何物,实在惭愧。所以就依原来对游程编码的一点印象,以为通过简单的游程编码操作可以实现对文件的压缩,没想到把1K的文本文件“压缩”成了4K,实在令人苦笑不得。说到这里就把游程编码的代码贴出来。
先放这里吧,以后或许有点用,毕竟它也是一种较常用的编码方法,没有用好是我个人的问题。
继续讲。到了晚上,通过看一些网上资料后,明白了什么是哈夫曼编码的压缩。发现我对这些东西的确还是挺感兴趣的。终于实现了对一个文本文件进行50%的压缩。
但是解压缩的代码还没做出来,因此对我来说,这个系统可能只能算完成了一般吧。明天继续努力,争取把整个系统完整的做出来。
这是哈夫曼编码主要部分:
这是概率统计计算部分:
在头文件当中也做了几个变量的定义:
通过在VC环境运行后,其最后结果是:
其中图片最又边的编辑框为最后的压缩结果,很明显,原来的数据得到了有效压缩。作为对文本进行压缩,要的就是这些乱码。接下来要做的就是把这些乱码还原回去。做到真正的压缩和解压缩。
今天是2月1日了,有很多事情要开始动手了,任务艰巨啊!坚持!