在Java中将singed int转换为uint

时间:2018-11-05 15:35:57

标签: java unsigned-integer

我正在使用将int作为输入参数的第三方服务器。但是,当查询我再次写入的值时,它似乎使用数字的最左位作为符号..所以将1000 ... 0(16位)返回为-32768,将返回11000 ... 0 -16384,等等。

鉴于Java不懂uint,我正在寻找一种有效的方法将负数转换为正确的正数(第一个为2 ^ 15,第二个为2 ^ 15 + 2 ^ 24 ,依此类推)。

1 个答案:

答案 0 :(得分:0)

对于无符号16位值,您可以屏蔽掉高位

x &= 0xFFFF;

对于无符号的32位值,您可以使用长

long l = x & 0xFFFFFFFFL;