我在c#中尝试以下代码,它给出了如下结果:
long dec1 = Convert.ToInt64("B62FD56EFD5B375D", 16);
结果:-531879796222753398
我试图在java中这样做,但我总是得到 NumberFormatException ,因为String中有字母数字 . 我在java中编码的是:
NumberFormatException
Long.parseLong("B62FD56EFD5B375D", 16);
我可以在java中知道这相当于什么吗?
long dec1 = new BigInteger("B62FD56EFD5B375D", 16).longValue();
你可以试试BigInteger
BigInteger value = new BigInteger(hex, 16);
对于长值,最大值为 9,223,372,036,854,775,807 (含) . 解析值 B62FD56EFD5B375D 时,它是 13,127,946,111,482,018,682 ,无法保存为long值 .
9,223,372,036,854,775,807
B62FD56EFD5B375D
13,127,946,111,482,018,682
所以改为使用BigInteger .
您可以在Java中使用Long.parseUnsignedLong来获得相同的结果 .
long result = Long.parseUnsignedLong("B62FD56EFD5B375D", 16);
4 回答
你可以试试BigInteger
对于长值,最大值为
9,223,372,036,854,775,807
(含) . 解析值B62FD56EFD5B375D
时,它是13,127,946,111,482,018,682
,无法保存为long值 .所以改为使用BigInteger .
您可以在Java中使用Long.parseUnsignedLong来获得相同的结果 .