我有一个表示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。