我想在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吗?还是我尝试这是不可能的!
谢谢!
Long.decode(str) 接受多种格式:
Long.decode(str)
接受以下语法给定的十进制,十六进制和八进制数字: DecodableString: 签名选择十进制数字 登录选择 0X HexDigits 登录选择 0X HexDigits 选择#HexDigits 登录 签名选择 0 OctalDigits 标志: --
接受以下语法给定的十进制,十六进制和八进制数字: DecodableString:
标志:
但是,如果这对您没有帮助,则您的String超出了可以容纳的范围。您需要一个BigInteger:
BigInteger
String s = "4d0d08ada45f9dde1e99cad9"; BigInteger bi = new BigInteger(s, 16); System.out.println(bi);
输出:
23846102773961507302322850521
为了进行比较,这里是Long.MAX_VALUE:
Long.MAX_VALUE
9223372036854775807