00101
= 5位数,忽略两个零并计算
0+(5-2-1)^2 = 4
4+(5-3-1)^2 = 5
5+(5-4-1)^2 = 5
最终答案是否正确?
char[] charArray = binary.toCharArray();
double answer = 0;
for (double index = 0; index < charArray.length; index++)
{
if (charArray[(int)index] == '1')
{
answer = answer + Math.pow(2.0, (charArray.length - index - 1));
}
}
答案 0 :(得分:1)
使用Integer.parseInt
,使用基数2将您的String转换为int:
int decimalValue = Integer.parseInt(c, 2);
参考:
正在计算您的预期结果,就好像从右到左读取二进制字符串一样;但是,您的代码是从左到右读取二进制字符串。
你也可以试试这个:
char[] charArray = binary.toCharArray();
double answer = 0;
for (double index = charArray.length - 1; index >= 0; index--)
{
if (charArray[(int)index] == '1')
{
answer = answer + Math.pow(2.0, index);
}
}
答案 1 :(得分:0)
不要重新发明轮子。使用以下简单代码。
int dec=Integer.valueOf(binStr, 10);//Here 10 is base.