我有以下代码
temp = "0x00"
String binAddr = Integer.toBinaryString(Integer.parseInt(temp, 16));
为什么会出现以下错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "0x00"
答案 0 :(得分:1)
由于字符串包含0x
,请使用Integer.decode(String nm):
String binAddr = Integer.toBinaryString(Integer.decode(temp));
答案 1 :(得分:0)
因为前导0x
不是有效的base-16号码的一部分 - 它只是向读者表明数字是十六进制的惯例。
答案 2 :(得分:0)
从javadocs中删除' 0x':
字符串中的字符必须都是指定基数的数字(由Character.digit(char,int)是否返回非负值确定),除了第一个字符可能是ASCII减号' - ' (' \ u002D')表示负值或ASCII加号' +' (' \ u002B')表示正值。返回结果整数值。
答案 3 :(得分:0)
答案 4 :(得分:0)
0x
用于整数文字,例如:
int num = 0xCAFEBABE;
但不是可解析的格式。试试这个:
temp = "ABFAB"; // without the "0x"
String binAddr = Integer.toBinaryString(Integer.parseInt(temp, 16));