我有一个表示64位无符号整数的十六进制字符串。

我想将其转换为Java中的十进制表示形式。

我想使用Long.parseLong("HexString", 16);,但是在Java中,最左边的位是符号位,任何大于2 ^ 31-1的数字都不适合。

那么我该如何转换和存储这些数据?

谢谢,
阳光明媚

最佳答案

您可以使用constructor that takes a BigInteger and an String radix创建int

BigInteger bigInt = new BigInteger(hexString, 16);


如果您具有Java 8,则可以使用Long.parseUnsignedLong,即使已设置通常将其放在Long.MAX_VALUE上的位,它也可以解析所有64位。它仍然返回long,在Java中仍然是带符号的,但将被解析为好像是无符号的long

long stillSigned = Long.parseUnsignedLong(hexString, 16);


如果解析的值为负,则真实的无符号值是有符号值+ 264。

10-07 19:03
查看更多