Java中的锯齿形解码/编码

Java中的锯齿形解码/编码,java,long-integer,zigzag-encoding,Java,Long Integer,Zigzag Encoding,我正在寻找一些可以提供函数的库,这些函数可以帮助将锯齿形编码的字节数组分解为2的长/整数补码 由于在中国使用了“之”字,我原以为番石榴有它的味道,但谷歌并没有给出任何结果。所谓之字形编码,我的意思是: Signed Original Encoded As 0 0 -1 1 1 2 -2 3 2147483647 4294967294 -2147483648 4294967

我正在寻找一些可以提供函数的库,这些函数可以帮助将锯齿形编码的字节数组分解为2的长/整数补码

由于在中国使用了“之”字,我原以为番石榴有它的味道,但谷歌并没有给出任何结果。所谓之字形编码,我的意思是:

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);

它不是一个大轮子,2行代码。@n也不是2行。看着它的实现,我发现它非常可怕。然后向下滚动。好的,它是python,但是没有任何东西没有1:1的Java等价物-bit@Arijoon这不适用于9或10字节的长度。问题是它不适用于编码为9或10字节的长度。如果要处理任意长度的数字,可以继续并调整BigInteger类型。