线程"main"异常java.lang.NumberFormatException:用于输入字符串:


String d="0xD437D437";
System.out.println(Integer.decode(d));

你的数字太大了,不适合整数类型-十六进制中的0x7FFFFFFF是最大的数字(2147483647 = 2^31-1)。如果您想使用这个字符串作为一个数字,使用Long.decode(d)将其作为Long。

String d = "0x7FFFFFFF";
String e = "0x80000000";
String f = "0xD437D437";
System.out.println(Integer.decode(d));
System.out.println(Long.decode(e));
System.out.println(Long.decode(f));

将打印

2147483647
2147483648
3560428599

文档状态

该字符序列必须表示一个正值,否则将抛出NumberFormatException。

0xD437D437为负值,即-734538697,由Integer.toHexString(-734538697)产生"d437d437"可见。

因此,将其解析为Long,如@Bonniu所说,如果您正在寻找正值,或者如果您实际上试图解析负整型,则可以将结果Long转换回Integer/int:

Long.decode("0xD437D437").intValue() // -734538697

相关内容

  • 没有找到相关文章