首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    整数编码之 ZigZag

    ZigZag 对于int值1,-1,20151103,均是用4 Bytes来表示: 1=[00000001]−1=[ffffffff]20151103=[01337b3f]1=[00000001]−1=...编码 首先,ZigZag按绝对值升序排列,将整数hash成递增的32位bit流,其hash函数为h(n) = (n > 31);对应地long类型(64位)的hash函数为(n...拿到hash值后,想当然的编码策略:直接去掉hash值的前导0之后的byte作为压缩编码。但是,为什么ZigZag(64)=8001呢?...因此,为了保证编码的唯一可译性,需要对hash值进行前缀码编码,ZigZag采用了如下策略: input: int n output: byte[] buf loop if 第七位满1或有进位...是一种变长编码,当整数值较大时,hash值的十六进制的有效位会较长,对应地ZigZag码字会出现需要5 byte存储;比如, ZigZag(Integer.MAX_VALUE)=[fe ff ff ff

    2.5K20

    编码原理(四)---ZIGZAG扫描

    上一篇我们降到,经过量化后得到了诸多零值和整数值,本篇接下来讲讲编码过程中过对这些值如何组织和处理,那就是ZigZag扫描喽。...一、简介 ZigZag扫描也称作之字形扫描,何以得此称谓,是因为其扫描的路径特别像汉字中的之字。...ZigZag扫描的工作就是按照一定的路径,将量化后的系数从二维变到了一维的过程,废话不多说,上图。 二、示意 ?...三、说明: (1) 上图中左侧的图展示了ZigZag的扫描顺序,因为经过DCT变换和量化之后,实际上矩阵的右下角基本上都已经变为零值,非零值基本集中在矩阵的左上角,经过ZigZag扫描之后...,将二维的矩阵变为一个一维的串以后,最前边的便是非零值,靠后边的便是较多的零值; (2)这样的扫描产生的顺序,对于后续的熵编码提供了特别良好的前提。

    3.9K20
    领券