一尘不染

如何在Java中将十六进制字符串转换为long?

java

我想在Java中将十六进制字符串转换为long。

我尝试了一般转换。

String s = "4d0d08ada45f9dde1e99cad9";
long l = Long.valueOf(s).longValue();
System.out.println(l);
String ls = Long.toString(l);

但我收到此错误消息:

java.lang.NumberFormatException: For input string: "4d0d08ada45f9dde1e99cad9"

有什么办法在Java中将String转换为long吗?还是我尝试这是不可能的!

谢谢!


阅读 343

收藏
2020-09-08

共1个答案

一尘不染

Long.decode(str)
接受多种格式:

接受以下语法给定的十进制,十六进制和八进制数字:
DecodableString:

  • 签名选择十进制数字
  • 登录选择 0X HexDigits
  • 登录选择 0X HexDigits
  • 选择#HexDigits 登录
  • 签名选择 0 OctalDigits

标志:

  • --

但是,如果这对您没有帮助,则您的String超出了可以容纳的范围。您需要一个BigInteger

String s = "4d0d08ada45f9dde1e99cad9";
BigInteger bi = new BigInteger(s, 16);
System.out.println(bi);

输出:

23846102773961507302322850521

为了进行比较,这里是Long.MAX_VALUE

9223372036854775807

2020-09-08