Sun*_*nny 0 java unsigned long-integer
我有一个表示64位unsigned int的十六进制字符串.
我想将它转换为java中的十进制表示.
我想使用Long.parseLong("HexString", 16);但在java中最左边的位是符号位,任何大于2 ^ 31-1的数字都不适合.
那我如何转换和存储这些数据?
谢谢,Sunny
您可以BigInteger使用带a String和int基数的构造函数创建一个.
BigInteger bigInt = new BigInteger(hexString, 16);
Run Code Online (Sandbox Code Playgroud)
如果您使用Java 8,则可以使用Long.parseUnsignedLong,这将允许您解析所有64位,即使通常将其Long.MAX_VALUE置位的位置位.它仍然返回一个long,它在Java中仍然是签名的,但它将被解析为好像它是一个未签名的long.
long stillSigned = Long.parseUnsignedLong(hexString, 16);
Run Code Online (Sandbox Code Playgroud)
如果解析的值为负,则真正的无符号值为有符号值+ 2 64.