十六进制到二进制转换java

时间:2013-10-21 11:41:43

标签: java binary hex

我有以下代码

temp = "0x00"
String binAddr = Integer.toBinaryString(Integer.parseInt(temp, 16)); 

为什么会出现以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "0x00"

5 个答案:

答案 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)

BigInteger.toString(radix)将解决此问题

参考method description

希望它有所帮助。

答案 4 :(得分:0)

0x用于整数文字,例如:

int num = 0xCAFEBABE;

但不是可解析的格式。试试这个:

temp = "ABFAB"; // without the "0x"
String binAddr = Integer.toBinaryString(Integer.parseInt(temp, 16));