文件压缩原理是什么?
压缩原理
电脑里文件都是以二进制储存的。压缩原理就是通过特定的算法,将文件转化,而转化以后的文件占用的空间较小。
举个简单得例子(当然这个例子应该有点问题,但是能说明问题):
原始文件:111110000001
算法:当连续同样的1或者0的个数超过5个,则将其转化成XX1或者XX0得形式;如果不超过5个,保持不变。XX是连续的1或者0的个数,如果连续数量较多,XX得位数可以增加。
于是11111可以表示成5个1,写成二进制就是1011;000000可以表示成6个0,写成二进制就是1100;而1保持不变。
这样,转化以后的文件就变成了101111001
可见,原始文件需要12个存储位置,而转化后的文件只需要9个存储位置。
当然,实际上压缩得算法多种多样,要比这个例子复杂的多。根据文件种类的不同压缩算法也经常不同。
文件压缩原理是什么?相关推荐
- 检查压缩包是否损坏_修复损坏的gzip压缩文件之原理篇
接修复损坏的gzip压缩文件之原理篇,再次引用GZIP结构图: 已知修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点.根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标 ...
- PDF文件压缩和优化的原理是什么?看了这篇C#案例实践就知道了
这篇是我初步选择的几个可优化压缩的截图 一.类库的引入 using Pdftools.Pdf; using Pdftools.PdfOptimize; // DLL文件这里下载 https://www ...
- zip 的压缩原理与实现
http://www.blueidea.com/bbs/newsdetail.asp?id=1819267&page=2&posts=&Daysprune=5&lp=1 ...
- Linux文件压缩与解压缩
什么是压缩文件?原理是什么? 简单的说,就是经过压缩软件压缩文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少, 例如有000000,可以把它变成6个0的写法60来减少该文件的 ...
- Linux学习记录--文件压缩
文件压缩 机器语言与程序语言 对于机器来说只能识别0,1,我们如果让机器运行必须输入机器能够识别的语言,可是机器语言不利于人们使用可理解,因此科学家就开发出人类能看的懂的程序语言,然后再创造出&quo ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )
文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )
文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )
文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...
- 基于LZ77算法的文件压缩收尾
基于Huffman算法和LZ77算法的文件压缩(六) 前面基于Huffman算法和LZ77算法的文件压缩(四) 基于Huffman算法和LZ77算法的文件压缩(五) 已经充分讲解LZ77到基本原理和实 ...
- 基于LZ77算法的文件压缩
基于Huffman算法和LZ77算法的文件压缩(五) 基于Huffman算法和LZ77算法的文件压缩(四)已经讲解LZ77算法到基本原理和压缩过程. 本文详细讲解文件压缩过程当中的问题 一.文件压缩的 ...
最新文章
- orm框架有哪些_java技术哪些是必学的?
- C++11 带来的新特性 (2)—— 统一初始化(Uniform Initialization)
- iOS开发中接口调用使用https
- 解决RabbitMQ消息丢失与重复消费问题
- mxnet可视化模型中间层feature map输出
- D3引擎用正则运算的方式,实现智能设备APP消息推送
- Debian GNU/Linux 9 将切换至 GCC6 编译器
- iOS核心动画之CALayer-隐式动画
- Microsoft Build 2021大会开始后,Develop Blog一系列更新
- linux mysql timestamp_MySQL时间类型Timestamp和Datetime 的深入理解
- ExtJs2.0学习系列(5)--Ext.FormPanel之第二式
- 基于JAVA+SpringMVC+Mybatis+MYSQL的眼镜店仓库管理系统
- Python实现一条基于POS算法的区块链
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
- install opencv on mac and use it in xcode
- modalTransitionStyle各种present效果
- 王道计算机考研图书勘误表公布!
- Docker部署homeassitant
- VMware View中智能卡和证书身份验证
- python实现在excel文件中写入和追加内容