谁知道压缩和解压缩怎么实现,请指教!!!
谁知道压缩和解压缩怎么实现,请指教!!! 问题点数:100、回复次数:2Top
1 楼jinrocky(3c273)回复于 2004-09-03 15:59:10 得分 0
【缩位压缩】
"缩位",就是缩减编码里没有必要
使用的"位"。例如文件里一个汉字也没有,也就是说内容中没有使用扩展 ASCII码,这样所
有字符编码的第七位(最前面那一位)将都会是0。利用这一点我们就可以缩掉这一位,假设
文件内容是ABCDEFGH。
文件内容: ABCDEFGH
二进制内容:01000001 01000010 01000011 01000100 01000101 01000110 01000111 01001000
压缩后文件内容: [该内容中文状态下显示是乱码,故无法写出]
二进制内容:10000011 00001010 00011100 01001000 10110001 10100011 11001000
这个压缩过程就是将原来顶头的0全部去掉后每8位重排,这样原来占用 8个字节的文件
就只占用了7个字节。只要解压时再加上第七位的0,文件就可以恢复原样。这一压缩技术特
别适用于对数字的压缩。因为0~9这十个阿拉伯数字占用的ASCII码是从00110000-00111001,
其前四位全部都是"0011"。
【直接压缩】
直接压缩的原理最易理解,因为有些时候,文件里不可避免地存在着连续同样的字符,
比如在文件末尾加了一行"※※※※※※※※※※※※※※※※※※※※※※"符号。这样的
话,压缩时可以只记住这个符号以及重复的次数,就可以迅速还原。
【字典压缩】
字典压缩是最重要的一种压缩技术,也是应用最为广泛的一种压缩技术。该技术搜索文
件中重复出现的字符串,如"中华人民共和国"、"改革开放"等,记录后(记录后的内容被称
为"字典")在正文中使用另一个简短的编码来代替它。想一想 Windows系统里充满了多少的
"Windows"和"Microsoft"这些字符,你就会明白为什么这种压缩技术对 Windows操作系统如
此有效了。这种压缩方案对政治稿件和学术论文特别适用。
字典压缩技术无论对文本文件还是可执行的代码文件都同样高效,而且可以涵盖掉 "直
接压缩"技术。现在流行的 ZIP,ARJ、RAR,AIN等压缩软件都采用了此项技术。但是此种技
术中,合适的字典长度很重要,将字典设得太大或太小都严重影响压缩效果,且进行压缩时
速度相对较慢。
多数压缩软件综合使用各项压缩技术。
【矢量压缩】
虽然字典压缩强劲有力,但是对有些文件内容还是无能为力,比如下面的内容:
啊雹玻长触郸锭法
这些看起来不成文的汉字实际上却有着内在的联系,它们分别是GB2312编码中的第1601、
1702、1803、1904、2005、2106、2207、2308区位的汉字。对于这种情况,可以通过寻找它
们之间的数学联系(如数列、方程等)进行记忆式的压缩。这种记忆式的压缩叫做矢量压缩,
是一种正在兴起的新压缩技术。
矢量压缩有时可以带给我们意想不到的享受。很多人惊奇于 FLASH能以如此小的体积带
给我们如此丰富的信息,就是因为 FLASH里使用了矢量压缩技术。使用方程记忆一个点的运
动轨迹远比记忆这个点的所有位置信息量要小得多的多。但另一面,对于照片和录音这些资
料,现在的矢量化技术还做不到从中找到即高保真又有规律的方案来,所以下一种压缩技术
有了大显身手的空间。
【有损压缩与VCD】
VCD的产生要归功于联合图象专家组 (JPEG)的努力。他们提出了一种全新的压缩技术标
准,也可以说是一种全新的压缩概念。这种概念催化了运动图象专家组(MPEG)标准的诞生
及VCD工业化的实现。JPEG图象压缩技术以图象的每8*8个点的点阵做为一个处理单元,在这
个范围内,如果全部都是某一色彩而只有极个别的其他色彩,那么其他色彩将被忽略。这种
压缩技术理论上的压缩比高达为64:1,一个64MB的文件现在只需 1MB就可以了?这实在很令
人心动。为了进一步扩展压缩效果和提高该技术的适应范围,JPEG做了灵活调整。允许用户
自行设置处理单元的大小和忽略其他色彩的程度,这也就是为什么JPEG图像有"质量"属性的
原因。
JPEG提出的这种"有损压缩"的概念使得该压缩技术有一定的局限性,比如说,JPEG不适
合用来压缩工程图纸、医学影像等资料。但其注重实用性的思路却启发了人们,RealPlayer
就是沿着这条路率先实现了网上视频的实时播放。而 VCD中剥离了图象的声音则也渐渐形成
了流行的MP3音乐。(声音压缩的编码方案过于繁杂,本文未予论述)
【压缩文件缝隙】
除这些技术之外,DOS/Windows系统本身也留给了大家一个压缩的故事。在DOS/Windows
系统下,磁盘存储空间被划分成一小块一小块地使用,而不是象UNIX或者Novell那样在系统
控制下所有文件都搅和在一起。这种开放式的磁盘文件使用格式虽然不安全(简直毫无安全
可言),但是效率高,易操作。这可能也是DOS/Windows在家用和商用市场打败UNIX和Novell
但在服务器领域却始终比不上他们的一个重要原因。——因为每个分配块只能供一个文件使
用,所以即使文件(或文件的最后一块)只有一个字节,也必须占用一个分配块。因为当时
只留了两个字节来分配这种存储块(两个字节是16位,这种分配机制叫做 FAT16),所以不
论分区有多么大,最多都只能被分为2^16=65536个分配块。比如说一个2GB的分区,其分配
块大小是32KB;当分区超过2GB时,分配块将不得不增长到 64KB。想一想,如果一个字节的
文件也要占掉你的64KB时,你能够不恼火?所以从Windows 95 OSR2版本开始,Microsoft推
出了FAT32解决方案。但是即使如此,"文件缝隙"依然存在。
Microsoft为了解决文件缝隙,曾在DOS 6.0时代推出过Double Space(DBLSPACE),后
来改为DRVSPACE,这东西在Windows 95/98/ME上还依然存在。当时号称可以倍增硬盘容量,
令大家激动不已,但是尝试过后高呼上当。原来Microsoft只不过是抄袭他人,使用了"虚拟
卷"技术而已,该技术顶多可以省掉文件缝隙,对于整盘只放了一个大文件的用户来说简直毫
无用途。
压缩文件缝隙现在有了一个较好的办法,那就是把不常用的文件用WINZIP打成一个包,
尤其是大量的小文件和/或在FAT16的环境下,使用这一方法可以节省你很多的磁盘空间。但
是无论如何,"文件缝隙"看来要在Windows系统中永远存在Top
2 楼stdotleo(大雨仔|M$ MVP)回复于 2004-09-03 16:18:49 得分 100
http://blog.csdn.net/stdotleo/archive/2004/08/24/83702.aspxTop




