数组变成了: {0,1,0,0 }
算一下maxDelta, 这个值是上面最后生成的数组中, 最大的一个数字,如果上面的数组全部是0, 这个值也为0, 就说明给定的原始数组是一个标准的单调递增的等差数列...我们最后的数组为[0,1,0,0], 在DirectWriter中,每一个数字只使用1个bit就可以表示. 因此这里存储了1, 只占用一个字节.
?...原理
根据上面的meta信息及data信息,是完全可以推算出原始值的(压缩了而解压不了岂不是笑话).
?
一个单调递增数组(只讨论正数), 连接首尾之后, 必然是一条在第一象限的类似于图中的直线....记下来这两个信息就可以还原出这条直线.
之后我们有一个数组, 下标可以带入公式算出对应下标的期望值,数组具体位置上保存着, 实际值与期望值之间的差值, 再减去最小值....总结
DirectMonotonicWriter类, 用来压缩存储单调递增的整数数组. 它会写入两个文件, 其中meta文件存储计算后的元数据, data文件存储转换后的数组.