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