0
我有一個十六進制字符串表示一個64位無符號整數。將64位無符號整數(以十六進制字符串形式)轉換爲java中的十進制
我想將其轉換爲java中的十進制表示形式。
我想使用Long.parseLong("HexString", 16);
,但在java中最左邊的位是符號位,任何大於2^31-1的數字都不適合。
那麼我如何轉換和存儲這些數據?
感謝, 陽光
我有一個十六進制字符串表示一個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 。