将64位无符号整数(以十六进制字符串形式)转换为java中的十进制
问题描述:
我有一个十六进制字符串表示一个64位无符号整数。将64位无符号整数(以十六进制字符串形式)转换为java中的十进制
我想将其转换为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);
如果被解析值是负的,则真正的无符号的值是有符号值+ 2 。