在java中将64位无符号整数(十六进制字符串形式)转换为十进制

在java中将64位无符号整数(十六进制字符串形式)转换为十进制,java,long-integer,unsigned,Java,Long Integer,Unsigned,我有一个十六进制字符串,它表示一个64位无符号整数 我想将其转换为java中的十进制表示形式 我想使用Long.parseLongHextString,16;但是在java中,最左边的位是符号位,任何大于2^31-1的数字都不适合 那么如何转换和存储这些数据呢 谢谢, Sunny您可以使用创建一个大整数 如果您有Java 8,您可以使用,这将允许您解析所有64位,即使设置了通常将其置于Long.MAX_值之上的位。它仍然返回一个long,在Java中它仍然是有符号的,但是它将被解析为一个无符号的

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

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

我想使用Long.parseLongHextString,16;但是在java中,最左边的位是符号位,任何大于2^31-1的数字都不适合

那么如何转换和存储这些数据呢

谢谢, Sunny

您可以使用创建一个大整数

如果您有Java 8,您可以使用,这将允许您解析所有64位,即使设置了通常将其置于Long.MAX_值之上的位。它仍然返回一个long,在Java中它仍然是有符号的,但是它将被解析为一个无符号的long

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

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