文件压缩的原理

目前压缩技术可分为通用无损数据压缩有损压缩两大类,但不管是采用何种技术模型,其本质内容都是一样的,即都是通过某种特殊的编码方式将数据信息中存在的重复度、冗余度有效地降低,从而达到数据压缩的目的。比如:“中国”是“中华人民共和国”的简称,但前者的字数是2,后者则是7,但我们都不会对它们俩所要表达的意思产生误解,这是因为前者保留了信息中最“关键点”。同时,作为有思维能力的人类,我们可以根据前后词汇关系和知识积累,就可推断出其原来的全部信息。压缩技术也一样,在不影响文件的基本使用的前提下,只保留原数据中一些“关键点”,去掉了数据中的重复的、冗余的信息,从而达到压缩的目的。这就是文件压缩技术所要遵循的最基本原理。

例如:一个文件的内容是11100000000...000001111(中间有一万个零),你要完全写出来的话,会很长很长,但如果你写“111一万个零1111”来描述它,也能得到同样的信息,但却只有十一个字,这样就减小了文件体积。在具体应用中很少有这样的文件存在,那些文件都相当复杂,根据一定的数学算法,权衡把哪段字节用一个特定的更小字节代替,就可以实现数据最大程度的无损压缩.

时间: 2024-10-06 09:02:48

文件压缩的原理的相关文章

HuffMan编码--文件压缩

HuffManTree,又称为最优二叉树,是加权路径最短的二叉树. 使用贪心算法来构建哈夫曼树.贪心算法:是指在问题求解时,总是做出当前看起来最好的选择.也就是说贪心算法做出的不是整体最优解,而是某种意义上的局部最优解.贪心算法不是对所有的问题都能得到最优解. 如下图哈夫曼树我们来分析下文件压缩的原理: 如图的哈夫曼树,我们将叶节点作为每个字符出现的次数,分析树可得,出现次数多的靠近跟节点,出现次数少的远离根节点 InPut为欲压缩文件, InPut.con配置文件, InPut.HuffMan

基于哈夫曼编码的文件压缩(c++版)

本博客由Rcchio原创 我了解到很多压缩文件的程序是基于哈夫曼编码来实现的,所以产生了自己用哈夫曼编码写一个压缩软件的想法,经过查阅资料和自己的思考,我用c++语言写出了该程序,并通过这篇文章来记录一下自己写该程序学到的东西.因为本人写的程序在压缩率上,还有提升的空间,所以本文将不定期更新,但程序整体的思路不会有较大的改动. 一.基于哈夫曼编码可实现压缩文件的原理分析 在计算机中,数据的存储都是二进制的,并且以字节作为基本的存储单位,像英文字母在文本中占一个字节,汉字占两个字节,我们把这种每一

linux文件压缩

一.压缩文件的原理 压缩技术,简而言之,我们可以将其想象成:其实文件里面有很多的"空间"存在,并不是完全填满的,而"压缩"技术就是将这些"空间"填满,从而使得整个文件占用量下降. 目前我们的操作系统数据中,都是使用字节(byte)单位来计量,不过事实上,计算机中最小的计量单位应该是位(bit),我们知道 1 byte = 8 bit.那么我们是怎么样对一些数据进行记录的呢? 例如我们只是需要记忆一个数字,即1这个数字,考虑到计算机所谓的二进制,如

Linux文件压缩与解压缩

什么是压缩文件?原理是什么? 简单的说,就是经过压缩软件压缩文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少, 例如有000000,可以把它变成6个0的写法60来减少该文件的空间,同理解压缩就是按照相同的原则把数据还原回来. Linux环境中有哪些格式的压缩文件? 常见的压缩文件有*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,为啥有这么多种压缩文件?这是因为Linux支持的压缩命令非常多, 且不同的命令所用的压缩技术并不相同,当然彼此之前可能就

linux服务器的Gzip文件压缩方法[转]

一.gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4. Gzip主要用于Unix系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的.现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式. 当应用Gzip压缩到一个纯

iOS网络-ZipArchive框架的文件压缩和解压

导入第三方框架ZipArchive之后还要在系统库文件中导入一个如下文件(搜索libz出来的任何一个都可以) 文件压缩 -(void)zip { NSArray *arrayM = @[@"/Users/gengqun/Desktop/Snip20160118_866.png", @"/Users/gengqun/Desktop/Snip20160118_867.png", @"/Users/gengqun/Desktop/Snip20160118_868

Linux下的文件压缩和打包

Linux 上的压缩包文件格式,除了 Windows 最常见的*.zip.*.rar..7z后缀的压缩文件,还有 .gz..xz..bz2..tar..tar.gz..tar.xz.tar.bz2 文件后缀名                               说明 *.zip                       zip程序打包压缩的文件 *.rar                          rar程序压缩的文件 *.tar                     tar

grunt-js文件压缩

grunt常用函数说明: Grunt : javascript世界的构建工具. grunt.initConfig : 定义各种模块的参数,每个成员项对应的一个同名模块. grunt.loadNpMTasks : 加载完成所需要的模块. grunt.registerTask : 定义具体的任务.第一个参数为任务名.第二个参数是一个数组,表示该任务需要一次使用的模块. 用于模块配置,它接受一个对象作为参数.该对象的成员与使用的同名模块--对应. (js文件压缩代码) // Project confi

php 文件压缩

PclZip文件压缩实现(推荐) 我在做项目是的时候有个打包下载的需求:把上传的多个文件压缩成一个文件并下载,我用的比较强大的PclZip类实现的.我的用的是thinkphp3.2框架开发的,具体实现代码如下  /**     * 压缩文件     * @param $zipName  压缩的文件名     * @param $fileName 要压缩的文件路径的数组或字符串     *  @param  $savePath  要保存的路径     * @return bool     */ p