项目:文件压缩与解压(修复bug)

来源:互联网 发布:rsa算法能被破解的原因 编辑:程序博客网 时间:2024/05/02 01:47

      昨天完成的文件压缩与解压小项目基本上是完成了,但是没有经过严格的验证。为了验证其使用性,我今天又做了一些测试,我网上找了一个比较能够验证各种情况的文件,大小大约是 8M左右,还是可以说明问题的,该文件中有一些编码让我的程序暴露出问题了,主要的问题如下:

 1.> 首先有些特殊的编码,总共有256个ASCII,所以我们的统计字符的应该unsigned char ,否则有些编码会导致错误。我们平时可能没有使用这些码值,但是不可否认它会出现在某些文件中的,所以我们需要考虑周全。

 2.> 各个字符出现的次数的计量单位应该为unsigned long long ,这样就能尽可能的解决大文件的压缩与解压问题。

 3.> 我之前是在读文件的时候顺便统计文件的长度,然后将该长度写进配置文件,这样写的时候的格式控制很麻烦,因为我使用的是64位的统计单位(unsigned long long),写进的时候需要写两次,读取的时候又得写两次(每次只能写32位),把握不好很容易会出现错误的。 但是我在调试的时候意外的发现重建哈夫曼编码树的根节点的权值比较特殊,好像和我从配置文件里面读取出来的长度很相似。于是我就静下来思考了一下,发现:根节点的权值刚好就是文件的长度,因为我们在写配置文件的时候是将每个字符以及其长度写进配置文件了,而恢复的时候也是根据权值(字符出现的次数)建立哈夫曼树的,所以根节点的权值刚好就是文件的长度,于是我们就可以巧妙的利用这一点。

下面是我使用一个8M的文件进行的测试:

(1). 程序运行的时间,压缩花了4秒钟,解压花了6.5秒




(2)原文件的大小以及压缩后的文件的大小,还有解压后的文件的大小

(3).利用Beyond Compare软件进行对比,结果显示两者相同,所以可以说明压缩和解压缩成功



      经过一天的测试这个项目应该没有什么大的bug,可以用于压缩解压一些常见文件了,或许还存在一些小的bug我没有发现,如果感兴趣的话可以使用一下我的这个压缩与解压的程序,若是有什么bug的话请给我留言,我不能保证会一直在线,但是一旦饿哦看到了问题我会在最短的时间内解决问题的。

0 0
原创粉丝点击