为了简短起见,我得到了一个有符号数 -25771(在 Java 中),我需要它的无符号字符串表示形式,即“4294941525”。Java 认为这个数字是有符号的二进制补码,但我需要它的无符号值。
我注意到 Integers 的 toString() 方法的 Javadoc 仅转换为有符号表示。
是否没有像“& 0xFF”这样的按位运算来获取无符号数?
为了简短起见,我得到了一个有符号数 -25771(在 Java 中),我需要它的无符号字符串表示形式,即“4294941525”。Java 认为这个数字是有符号的二进制补码,但我需要它的无符号值。
我注意到 Integers 的 toString() 方法的 Javadoc 仅转换为有符号表示。
是否没有像“& 0xFF”这样的按位运算来获取无符号数?
在 Java 8 中,您可以只使用Integer.toUnsignedString(int i)
.
我会尝试
int val = -25771;
System.out.println(Long.toString(val & 0xFFFFFFFFL));
印刷
4294941525
或者
"" + (val & 0xFFFFFFFFL)
您可以使用 Guava 的UnsignedInts.toString和parseUnsignedInt来反转该过程。