java - 如何在java中输出无符号整数的绝对值

标签 java int java-8 unsigned

<分区>

我想将 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) 

关于java - 如何在java中输出无符号整数的绝对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381015/

相关文章:

c - 扫描整数数组

java - Java Mail 标准属性是否有常量? ide/编译器还有其他方法可以检查他们的拼写吗?

Java:数组的组合,每个数组 x

java - 在单个存储过程中创建两个或多个表

java - java中有math.substring这样的东西吗?

java - 防止输入错误

java - Java 8 中 try-with-resources block 中的锁风险

java - Optional.ofNullable() 是否应该用于空检查?

java - 如果 Stream 没有结果则抛出异常

java - 如何在 Java 中有效地连接 ArrayList 中的连续字符串间隔?