• 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 是以十进制方式存放的 ,有兴趣自己算一算就能明确了



  • 相关阅读:
    入门(一)---Java的发展史
    移除元素
    TCP的 “三次握手” 和“四次挥手”,到底是什么鬼?
    功能测试框架
    python学习笔记之--__new__方法和__init__方法
    HTTP协议状态码详解
    python学习笔记之--hasattr函数
    一文总结软件测试工程师面试前必背的面试题(持续更新中)
    MYSQL安装file /usr/share/mysql/charsets/README from install of MySQL-server-5.6.35-1.el6.x86_64 conflicts with file from package mariadb-libs-1:5.5.60-1.el7_5.x86_64报错
    centos7 安装salt起不来处理
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10875212.html
  • Copyright © 2020-2023  润新知