1

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));
   }
}
4

2 回答 2

1

使用Integer.parseInt, 将您的 String 转换为 int 使用基数二:

int decimalValue = Integer.parseInt(c, 2);

参考这个:

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#parseInt%28java.lang.String,%20int%29

正在计算您的预期结果,就好像从右到左读取二进制字符串一样;但是,您的代码正在从左到右读取二进制字符串。

你也可以试试这个:

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);
     }
}
于 2013-07-05T11:51:19.787 回答
0

不要重新发明轮子。使用以下简单代码。

  int dec=Integer.valueOf(binStr, 10);//Here 10 is base.
于 2013-07-05T11:49:50.077 回答