java转换为十进制算法
我正在研究一种将二进制转换为十进制的算法,我偶然发现了一个奇怪的问题。该算法在每个平台上的工作原理都是一样的,但在另一台计算机上返回的结果不同。它从10110返回7,也就是22。代码:
public class Main {
public static int convertToDecimal(String binary) {
int conversion = 1;
int result = 0;
for(int i = 1; i <= binary.length(); i++) {
if (binary.charAt(binary.length() - i) == '1') {
result += conversion;
conversion *= 2;
}
}
System.out.println(result);
return result;
}
public static void main(String[] args) {
convertToDecimal("10110");
}
}
# 1 楼答案
将
conversion
变量加倍应该放在if
块之外最好使用带有
Integer.parseInt
的内置方法: