Advertisement

snappy算法的详细解析

阅读量:

1. 获取原始数据大小N,将N存储到输出结果开头位置,占用1-5个字节不等:

  • N < (1 << 7)时,占1个字节

out[0] = N

  • N < (1 << 14)时,占2个字节

out[0] = N | 128; out[1] = N >> 7;

  • N < (1 << 21)时,占3个字节

out[0] = N | 128; out[1] = (N >> 7) | 128; out[2] = N >> 14;

  • N < (1 << 28)时,占4个字节

out[0] = N | 128; out[1] = (N >> 7) | 128; out[2] = (N >> 14) | 128; out[3] = N >> 21;

  • other
    out[0] = N | 128; out[1] = (N >> 7) | 128; out[2] = (N >> 14) | 128; out[3] = (N >> 21) | 128; out[4] = N >> 28;

2. 将数据切分为65536字节的块,循环处理各个块

(1)建立一个类型定义为uint16的哈希表,并将其初始值设为零;

全部评论 (0)

还没有任何评论哟~