二进制到十进制而不使用parseInt

时间:2013-10-17 19:32:28

标签: javascript loops binary decimal

我真的很难为JavaScript创建一个函数。

我知道如何精神上从二进制到十进制的数学,但我不知道如何写出来。 我无法使用parse int或字符串。

我不是要求任何人为我做这件事我只想了解从哪里开始。

function BintoDec(x)
{
var number = x 

任何帮助都是很好的帮助。 提前谢谢

修改

我能够提出这个功能,但最终得到0作为我的输出。 救命啊!

function BinToDec(x) {
var result = 0;
var multiple = 1;
for (var i = 0; i < x.length; i++)
{
var digit = x[x.length - 1 - i];

if (digit == '1') {
result += multiple;
}
multiple *= 2;
}
return result;
}

print(BinToDec(101));

4 个答案:

答案 0 :(得分:4)

  

我不是要求任何人为我做这件事我只想提出一些想法   从哪里开始

您可以使用: -

var digit = parseInt(binary, 2);

同时检查parseInt

编辑: - (Didnt发现你不想使用parseInt)

您可以尝试遍历字符串并尝试这样: -

for(i = 0; i < len; i++)
{
  r = r * 2 + (arr[i] == '1' ? 1 : 0);
}

答案 1 :(得分:0)

首先写一个检查并确保所有字符都是0或1,一旦完成并验证,开始在字符串中向后循环,并将2乘以0或1的计数器的幂:

         "0100101010"
                  <-

            +2^0 x 0
           +2^1 x 1
...

如果你真的需要实现自己。 或者您可以使用:

var binary = "0100101010";
parseInt(binary, 2);

答案 2 :(得分:0)

我会在函数体中使用以下内容:

var dec = 0, char;
for (var i = x.length - 0; i >= 0; i--) {
    char = x.charAt(i);
    if (char) {
        dec += Math.pow(2, i);
    }
}

答案 3 :(得分:0)

这是一个正确且格式正确的解决方案:

  function bin2dec(num){
    return num.split('').reverse().reduce(function(x, y, i){
      return (y === '1') ? x + Math.pow(2, i) : x;
    }, 0);
  }