我在第六章中了解了文件的压缩。文件是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。文件就是字节数据的集合。如果文件中存储的数据是文字,那么该文件就是文本文件。如果是图形,那么该文件就是图像文件。在任何情况下,文件中的字节数据都是连续存储的。
文件的压缩机制RLE算法的机制,把文件内容用“数据×重复次数”的形式来表示的压缩方法称为RLE算法。RLE算法是一种很好的压缩方法,经常被用于压缩传真的图像等。因为图像文件本质也是字节数据的集合体,所以可以用RLE算法来压缩。然而,在实际=的文本文件中,同样字符多次重复出现的情况并不多见。虽然针对相同数据经常连续的图像、文件等,RLE算法可以发挥不错的效果,但它并不适合文本文件的压缩。不过,因为该压缩机制非常简单,因此使用RLE算法的程序也相对更容易编写。
哈夫曼算法是哈夫曼于1952年提出的压缩算法。文本文件是由不同类型的字符组合而成的,而且不同的字符出现的次数也是不同的,哈夫曼算法的关键就在于“多次出现的数据用小于8位的字节数来表示,不常用的数据则可以用超过8位的字节数来表示”。为了更好的了解哈夫曼算法,现了解莫尔斯编码。莫尔斯编码不是通过语言,而是通过“嗒 嘀 嗒 嘀”这些长点和短点的组合来传递文本信息的。实际上,根据字符种类的不同,莫尔斯电码符号的长度也是不同的。莫尔斯编码把一般文本中出现频率高的字符用短编码来表示。
可逆压缩和非可逆压缩图像文件还可以使用与前文介绍的RLE算法、哈夫曼算法不同的其他压缩算法。这是因为,多数情况下,并不要求压缩后的图像文件必须还原到与压缩前同等的质量。我们把能还原到压缩前状态的压缩称为可逆压缩,无法还原到压缩前状态的压缩称为非可逆压缩。
压缩算法的种类大概有一二十种。之所以有如此多的压缩算法,是因为压缩比率,压缩需要的处理时间以及各种文件的需求等是不一样的。