尝试从字符串到整数变量获取二进制值时出现NumberFormat错误

时间:2014-09-16 13:50:53

标签: java string int

您好我是Java的新手,任何帮助将不胜感激我想尝试将十进制数转换为二进制数,然后在该二进制数上进行左移。但它不允许我在字符串上左移,它让我例外,我尝试将其转换为整数。

                int i = 40700;
                iToBinary = Integer.toBinaryString(i);
                i = Integer.parseInt(iToBinary);
                i=i<<1;

这应该是最佳方式。我还需要将符号大小的十进制转换为二进制,所以我不认为像toBinaryString这样的直接函数对我有效。但我想知道如何做到这一点。

4 个答案:

答案 0 :(得分:0)

您要解析的二进制字符串对于整数来说是大的。请尝试以下方法:

long i = 40700;
iToBinary = Long.toBinaryString(i);
i = Long.parseLong(iToBinary);
i=i<<1;

答案 1 :(得分:0)

这可能会有所帮助。试试

     int i = 40700;
     String iToBinary = Integer.toBinaryString(i<<1);
     Long z = Long.parseLong(iToBinary,2);
     System.out.println(" i " + z);

我们得到的答案是81400

答案 2 :(得分:0)

您需要radix方法中的其他参数parseInt: 请参阅此链接,例如:How to convert a Binary String to a base 10 integer in Java

以下是此方法的java示例:

Examples: 

     parseInt("0", 10) returns 0
     parseInt("473", 10) returns 473
     parseInt("+42", 10) returns 42
     parseInt("-0", 10) returns 0
     parseInt("-FF", 16) returns -255
     parseInt("1100110", 2) returns 102

在你的情况下将是:

i = Integer.parseInt(iToBinary, 2);

答案 3 :(得分:0)

要解决您的异常,您可以使用两个参数使用Integer.parseInt的重载方法,然后您可以定义radix

更改此行:

i = Integer.parseInt(iToBinary);

对此:

i = Integer.parseInt(iToBinary, 2);