我想将 4294967295
赋给一个变量 (2^32-1
)
很明显,我不能用 Integer
做到这一点,而可以用 Long
做到这一点。
但是,我注意到 Java 8 提供了无符号整数(至少是某些方法)。
有谁知道 Integer.parseUnsignedInt()
方法的作用?
当我输入 "4294967295"
并打印变量时,它给出的输出为 -1
(-2
代表 4294967294
,-3
代表 4294967293
等等...)
有没有办法让我仍然可以在变量中包含 4294967295
?
我是不是漏掉了什么?
a=Integer.parseUnsignedInt("4294967295");
System.out.println(a);
这给出了 -1
的输出,但我期望的是 4294967295
。
您可以通过调用 toUnsignedString()
将该整数视为无符号整数:
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(Integer.toUnsignedString(uint));
您还可以调用其他一些将 int 解释为无符号的方法。
例如:
long l = Integer.toUnsignedLong(uint);
System.out.println(l); // will print 4294967295
int x = Integer.parseUnsignedInt("4294967295");
int y = 5;
int cmp1 = Integer.compareUnsigned(x,y); // interprets x as 4294967295 (x>y)
int cmp2 = Integer.compare(x,y); // interprets x as -1 (x<y)