我有一个表示 64 位无符号整数的十六进制字符串。
我想将其转换为java中的十进制表示形式。
我想使用 Long.parseLong("HexString", 16);
但在 java 中最左边的位是符号位,任何大于 2^31-1 的数字都不适合。
那么我如何转换和存储这些数据?
谢谢, 阳光明媚
最佳答案
您可以使用 constructor that takes a String
and an int
radix 创建一个 BigInteger
.
BigInteger bigInt = new BigInteger(hexString, 16);
如果您有 Java 8,则可以使用 Long.parseUnsignedLong
,这将允许您解析所有 64 位,即使设置了通常将其置于 Long.MAX_VALUE
之上的位。它仍然返回一个 long
,在 Java 中它仍然是有符号的,但它会被解析为一个无符号的 long
。
long stillSigned = Long.parseUnsignedLong(hexString, 16);
如果解析的值为负数,则真正的无符号值是有符号值 + 264。
关于java - 在java中将64位无符号整数(十六进制字符串形式)转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26068555/