gpt4 book ai didi

java - Java 中的 ZigZag 解码/编码

转载 作者:行者123 更新时间:2023-12-02 11:08:15 33 4
gpt4 key购买 nike

我正在寻找一些库,它可以提供一些函数,可以帮助将 zig-zag 编码的字节数组解码为 2 的补码 long/int 并返回。

由于 ZigZag 用于 protobuf我预计 Guava 有它的用处,但谷歌搜索没有给出任何结果。通过 ZigZag 编码,我的意思是:

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

关于java - Java 中的 ZigZag 解码/编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50773405/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com