ZigZag decode/encode in Java



我正在寻找一些库,它可以提供可以帮助将之字形编码字节数组解构为2补码long/int并返回的功能。

由于ZigZag用于protobuf,我预计番石榴有一些东西,但谷歌搜索没有给出任何结果。通过之字折线编码,我的意思是:

Signed Original Encoded As
0               0
-1              1
1               2
-2              3
2147483647      4294967294
-2147483648     4294967295

我必须"重新发明轮子"吗?

你来了:

Long aD = 2147483647L;
//encode
Long aE = (aD >> 31) ^ (aD << 1);
//decode
Long bD = (aE >> 1) ^ -(aE & 1);
System.out.println(aD + "," + aE + "," + bD);

最新更新