lzma 知识点滴
版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/xuweiwei1860/article/details/31419195
LZMA(Lempel-Ziv-Markov chain-Algorithm的缩写)是2001年以来得到发展的一个数据压缩算法。它用于7-Zip归档工具中的7z格式。它使用相似于LZ77的字典编码机制,在一般的情況下压缩率比bzip2高,用于压缩的字典档案大小可达4GB。
对照集中压缩:
耗用时间 bzip >lzma2>lzma>gzip
压缩率 lzma2>bzip>gzip>lzma
最后压缩结果是 lzma的文件最小 ,果然改进版的算法有优势。
这里要看一下lzma的文件头信息
看的方法能够直接用二进制工具打开.lzma文件 ,更方便的方法是ubuntu中已经集成了lzma的查看工具 ,利用命令行
lzmainfo XXX.lzma
就能够看到文件头信息了:
duobao@ubuntu:~/tmp$ lzmainfo a.lzma
a.lzma
Uncompressed size: 0 MB (20644 bytes)
Dictionary size: 8 MB (2^23 bytes)
Literal context bits (lc): 3
Literal pos bits (lp): 0
Number of pos bits (pb): 2
这里就看到了文件头打印出来的信息 ,在对照一下文件的二进制信息
00h:5d 00 00 80 00 22 01 00 00 00 00 00 00 00 26 16
10h:85 bc .....
主要就是签名这一段。这里摘录一段lzma的specification
The lzma file format layout:
Offset Size Description
0 1 LZMA model properties (lc, lp, pb) in encoded form
1 4 Dictionary size (32-bit unsigned integer, little-endian)
5 8 Uncompressed size (64-bit unsigned integer, little-endian)
13 Compressed data (LZMA stream)
LZMA properties:
name Range Description
lc [0, 8] the number of "literal context" bits
lp [0, 4] the number of "literal pos" bits
pb [0, 4] the number of "pos" bits
dictSize [0, 2^32 - 1] the dictionary size
这里就是介绍清楚了,其它不封都应该能看懂,比如8M的Dictionary size 就在1-5这四个字节 00 00 80 00
有一个lc lp pb 这个要说明一下。
p->lc = d % 9;
d /= 9;
p->pb = d / 5;
p->lp = d % 5;
这里能够看出 在第一个字节也就是5D里面包括的信息 lc pb lp 是以十进制方式存放的 ,有兴趣自己算一算就能明确了
lzma 知识点滴的更多相关文章
- linux工作知识点滴
1. 要学会使用ldd *.so来查看动态库所依赖的库,以排除一些异常错误. 2. ldconfig是一个动态链接库管理命令,ldconfig命令的用途,主要是在默认搜索目录(/lib和/usr/li ...
- 基于linux运用python开发知识点滴
我是小白,希望我的文章能对小白们有点作用. A.Linux的开源,优势明显,如何使用,基本命令如下: 个人认为最基础的两种操作: 1.文件操作: ls 看文件夹下内容 ls -a 隐藏文件 -l非隐藏 ...
- JPA相关知识点滴--持续更新中.....
Java 持久化(JPA) •Java EE 5 在EJB 3.0 中包含JPA 1.0 •参考实现:TopLink Essentials •Java EE 6 包含JPA 2.0 •参考实现:Ec ...
- C++ 与 CDC相关的知识,点滴总结
hdc = GetDC (hwnd) ; GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境. 所获得的设备环境可以是通用.类或者私有类型,具体由指定窗口的类风格决定.对于通用设备 ...
- Android知识点滴
今天,把新作的布局状态魅族机上进行测试 发现了一个BUG,造成闪退. 看了下log,一个布局造成的. 开始分析这个布局造成这个问题的原因. 开始艰难的调试过程. 代码注释大法,发现这个问题是一个tex ...
- matplotlib之pyplot 知识点滴
以下是一些常用地址链接,请参考 matplotlib 官方网址 plt.plot()函数细节 Matplotlib 中文用户指南 4.6 编写数学表达式 Python seaborn matplotl ...
- php类知识点滴---魔术方法,系统在特定时机触发的方法
__get()获取私有或受保护属性时调用的方法 <?php class coach { private $chairfit = "徐晓冬"; public function ...
- php类知识点滴---类继承的一些原则
完全重写 <?php class coach { public function __construct() { echo "欢迎来到~北武堂训练~"; } } cl ...
- php类知识点滴---类的实例化,构造函数,继承初步
实例化类----黑科技用法,通过字符串来实例化 class coach { public function __construct() { echo "欢迎光临北武堂"." ...
随机推荐
- CentOS 7虚拟机下设置固定IP详解
说明 1.笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网: 2.只要笔记本主机可以正常访问外网,启动虚拟机中的CentOS 7系统就可以正常访问外网,无需再进 ...
- Yii 1.1 cookie删不掉
我的cookie是这样设置的: $cookie = new CHttpCookie('username','Jack'); $cookie->expire = time()+60*60*24*3 ...
- 看FPGA面试题时见到被考到的几个逻辑电路
8位 D触发器: module dff8(clk , reset, d, q); input clk; input reset; :] d; :] q; :] q; always @ (posedge ...
- Java面试宝典(4)Java基础部分
71.说出一些常用的类,包,接口,请各举5个 要让人家感觉你对java ee开发很熟,所以,不能仅仅只列core java中的那些东西,要多列你在做ssh项目中涉及的那些东西.就写你最近写的那些程序中 ...
- Purfer序列
我们经常干的一件事是把数变为关于图的问题来解决,那么久了未免不会有这个疑问:能不能把图变成数来解决问题? 所以有了这个purfer数列. 介绍一下这个数列有什么用(或者说有什么性质): 能够将一棵无根 ...
- 转载:Think in AngularJS:对比jQuery和AngularJS的不同思维模式(大漠穷秋)
导言 stackoverflow上有一个人问了一个问题:如果我有jQuery背景,我应该如何切换到AngularJS的思维模式? 有一个回复非常经典,获得了两千多票. 为了让国内开发者也能领略到其中的 ...
- CF963E Circles of Waiting
Circles of Waiting 求一个整点四连通随机游⾛,离原点距离超过R期望步数.R≤50. 带状矩阵法 本质上就是网格图的随机游走. \[ E_x=\sum_y P_{x,y}E_y+1 \ ...
- Sql语法整理-图片版....
- Hibernaate 详解
hibernate.cfg.xml 连接数据库: connection.username 数据库的名称.这是我自己的是luwei connection.password 数据库的密码 luwei co ...
- I2C_24c02实验
一.RCC初始化 /* Setup the microcontroller system. Initialize the Embedded Flash Interface, initialize th ...