bin到dec的计算是否正确



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

使用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);
     }
}

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

  int dec=Integer.valueOf(binStr, 10);//Here 10 is base.

最新更新