如何在不使用乘法,除法或mod的情况下执行此操作?
我带来了解决方案,但它需要倍增。
public StringBToInt(String b) {
int value = 0;
for(int z = 0; z < b.length(); z++) {
value = value * 2 + (int)b.charAt(i) - 48;
}
}
编辑:抱歉!只允许使用3个Java API。 length(),charAt()和equals()
答案 0 :(得分:2)
不使用乘法,使用按位移位运算符:
public StringBToInt(String b) {
int value = 0;
for(int z = 0; z < b.length(); z++) {
if(b.charAt(z) == '1'){
shift = b.length()-z-1;
value += (1 << shift);
}
}
}
答案 1 :(得分:1)
使用Integer.valueOf(String, int)
方法:
Integer.valueOf('10101',2)
答案 2 :(得分:1)
尝试使用Integer.parseInt(..)
,如下所示:
int value = Integer.parseInt(b, 2);
Ofcourse b
是二进制字符串。
答案 3 :(得分:0)
您可以使用Integer.parseInt
方法执行此操作。
String binary = "101010"
int value = Integer.parseInt(binary, 2);
&#39; 2&#39;在Integer.parseInt
中意味着解析基数2中的String
。