增量编码(delta coding)通过维护增量的方式,保存数据,这样能够达到更好的压缩比,对于保存连续的或者数据段在一个稳定范围内出现的场景,效果更好。
下面是我用go代码简单实现
package main
import (
"fmt"
)
func main() {
buf := []int{1,2,3,5,5,6}
delta_encode(buf)
fmt.Println(buf)
delta_decode(buf)
fmt.Println(buf)
}
//加密
func delta_encode(buffer []int){
last := 0
for i := 0; i < len(buffer); i++{
current := buffer[i];
buffer[i] = current - last
last = current
}
}
//解密
func delta_decode(buffer []int){
last := 0;
for i := 0; i < len(buffer); i++{
current := buffer[i];
buffer[i] = current + last;
last = buffer[i];
}
}
效果如下:
[1 1 1 2 0 1]
[1 2 3 5 5 6]
这样连续的1在数据压缩的时候可以获得更好的压缩比。