求助:Java中十六进制字符串解析触发NumberFormatException异常
解决java.lang.NumberFormatException异常问题
问题原因
你使用的字符串"0xD437D437"对应的十六进制数值为3590431799,而Java中Integer类型的取值范围是-2147483648到2147483647,该数值已超出Integer的最大值,因此调用Integer.decode()时会抛出NumberFormatException。
解决方案
方案一:改用Long.decode()处理
Long类型的取值范围远大于Integer(-9223372036854775808到9223372036854775807),可以容纳目标数值,直接替换方法即可:
String d = "0xD437D437"; System.out.println(Long.decode(d));
方案二:手动解析为Long类型
也可以去掉十六进制前缀后,用Long.parseLong()指定基数解析:
String d = "0xD437D437"; long value = Long.parseLong(d.substring(2), 16); System.out.println(value);
内容的提问来源于stack exchange,提问作者sathish
相关产品推荐
相关产品推荐

