字符串二进制到Hex Java

时间:2012-12-03 04:25:27

标签: java string binary hex

我的代码看起来像这样

             public static void main(String[] args) {
    String string= "11011100010000010001000000000000";
   String string1= "00000000010000110000100000101100";

    System.out.println(Integer.toHexString(Integer.parseInt(string1,2)));

    System.out.println(Integer.toHexString(Integer.parseInt(string,2)));


}

第一个字符串转换得很好,但第二个字符串有一个java.lang.NumberFormatException错误 不知道问题是什么

5 个答案:

答案 0 :(得分:4)

试试这个:

Long.toHexString(Long.parseLong(string,2))

(从parsLong编辑为parseLong)

答案 1 :(得分:3)

对于什么是值得的,你也可以使用BigInteger类:

String string  = "11011100010000010001000000000000";
String string1 = "00000000010000110000100000101100";

System.out.println(new BigInteger(string1, 2).toString(16));
System.out.println(new BigInteger(string, 2).toString(16));

答案 2 :(得分:1)

您可以使用Long代替Integer,(Long.parseLongLong.toHexString方法。

答案 3 :(得分:1)

当32个字符的二进制数的最高有效位设置为1时,结果值超出int支持的正数范围,并且不能再被解释为有效整数。这会根据文档导致异常:

如果发生以下任何一种情况,则抛出NumberFormatException类型的异常:

  
      
  • 第一个参数为null或是一个长度为零的字符串。
  •   
  • 基数小于Character.MIN_RADIX或大于Character.MAX_RADIX。
  •   
  • 字符串的任何字符都不是指定基数的数字,除非第一个字符可以是减号' - '('\ u002D'),前提是该字符串长度超过长度1.
  •   
  • 字符串表示的值不是int类型的值。(强调是我的)
  •   

要输入此负二进制值,请在数字前面使用-符号,并将其余位转换为2-s补码表示。

如果您需要长度超过32位的数字,或者您希望该值继续被解释为正数,则需要切换到64位整数数据类型。

答案 4 :(得分:0)

如果要解析为整数,则范围应为

1000000000000000000000000000000001111111111111111111111111111111