您好我是Java的新手,任何帮助将不胜感激我想尝试将十进制数转换为二进制数,然后在该二进制数上进行左移。但它不允许我在字符串上左移,它让我例外,我尝试将其转换为整数。
int i = 40700;
iToBinary = Integer.toBinaryString(i);
i = Integer.parseInt(iToBinary);
i=i<<1;
这应该是最佳方式。我还需要将符号大小的十进制转换为二进制,所以我不认为像toBinaryString这样的直接函数对我有效。但我想知道如何做到这一点。
答案 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);