ZigZag用Java解码/编码

时间:2018-06-09 10:43:21

标签: java long-integer zigzag-encoding

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

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

int

我是否需要"重新发明轮子"?

1 个答案:

答案 0 :(得分:1)

你走了:

    Long aD = 2147483647L;
    //encode
    Long aE = (aD >> 31) ^ (aD << 1);
    //decode
    Long bD = (aE >> 1) ^ -(aE & 1);

    System.out.println(aD + "," + aE + "," + bD);