[英]ZigZag decode/encode in Java
我正在尋找一些庫,該庫可以提供一些功能,這些功能可以幫助將Zig-zag編碼的字節數組解構為2的long
/ int
和back補碼。
由於ZigZag用於protobuf中,所以我希望番石榴有它的用處,但是谷歌搜索沒有任何結果。 通過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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.