snappy格式解析

snappy格式解析snappy 是 google 开源的一种压缩方法 用途和 lz4 比较接近 主要用于高速的压缩与解压

总述

snappy是google开源的一种压缩方法,用途和lz4比较接近,主要用于高速的压缩与解压。

snappy压缩后的串编码形如:

  1. 原始串长度(7bit有效位压缩整形);
  2. (1-N) 00类型串/01类型串/10类型串/11类型串:这几种类型一个接一个基于需要出现。

00/01/10/11串类型说明

snappy格式压缩串,首先是存了按照7bits存储的长度,然后就是4中类型的表达串了。

解压样例

下面是一个字符串压缩后的解压样例;

Snappy encoding is not bit-oriented, but byte-oriented (only whole bytes are emitted or consumed from a stream). 
0x0000021CB 70 b0 53 6e 61 70 70 79 20 65 6e 63 6f 64 69 6e p?Snappy encodin 0x0000021CB 67 20 69 73 20 6e 6f 74 20 62 69 74 2d 6f 72 69 g is not bit-ori 0x0000021CB 65 6e 74 65 64 2c 20 62 75 74 20 62 79 74 65 15 ented, but byte. 0x0000021CB 13 e4 20 28 6f 6e 6c 79 20 77 68 6f 6c 65 20 62 .? (only whole b 0x0000021CB 79 74 65 73 20 61 72 65 20 65 6d 69 74 74 65 64 ytes are emitted 0x0000021CB 20 6f 72 20 63 6f 6e 73 75 6d 65 64 20 66 72 6f or consumed fro 0x0000021CB45853A0 6d 20 61 20 73 74 72 65 61 6d 29 2e 00 00 00 00 m a stream)..... 

压缩串逐字节解码:

  1. 0x70 – 112,标识源字符串长度112
  2. 0xb0 – 0b (00)-Literal, =32+8+4=44长度,+1=45长度
  3. 原始串-45字节,copy到输出中
    0x53 6e 61 70 70 79 20 65 6e 63 6f 64 69 6e
    0x67 20 69 73 20 6e 6f 74 20 62 69 74 2d 6f 72 69
    0x65 6e 74 65 64 2c 20 62 75 74 20 62 79 74 65






  4. 0x15-0b00010101 (01)-3bits-len,11bits-offset, len=0b101+4=9(从4开始)
    0x13-0b00010011 offset=0b00010011 = 19,
    offset=19回退到-oriented之前,长度使用9,把对应9字节copy到输出中




  5. e4 – 0b (00)-literal, =32+16+8+1=57,+1=58长度
  6. 原始串-58字节,copy到输出中
    0x20 28 6f 6e 6c 79 20 77 68 6f 6c 65 20 62
    0x79 74 65 73 20 61 72 65 20 65 6d 69 74 74 65 64
    0x20 6f 72 20 63 6f 6e 73 75 6d 65 64 20 66 72 6f
    0x6d 20 61 20 73 74 72 65 61 6d 29 2e








经过上述操作后,就把压缩后的字符串还原输出了原始字符串;

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 个人随笔)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215616.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:50
下一篇 2026年3月18日 下午1:50


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号