Javascript二进制到十进制计算器

时间:2014-02-17 19:14:43

标签: javascript binary

我不知道为什么这段代码不起作用,任何人都可以帮忙:

toDecimal: function () {
    var counter = 0;
    var decimalValue = 0;
    for (var i = 7; i > 0; i--){
        var binaryValue = self.binaryArray[i];
        decimalValue += binaryValue * Math.pow(2, counter);
        counter++;
    }
    return decimalValue;
}

代码self.binaryArray只是一个数字数组(只包含8个字节,这就是我需要处理的所有内容)这样的事情[0,0,0,0,1,1,1,1]

2nd'ly

你可以提供一个更好的方式来做计数器,对于我的生活我无法弄清楚如何从i值计算计数器,这不应该太难,简单的数学真的。

由于

2 个答案:

答案 0 :(得分:2)

您的原始循环永远不会处理binaryArray[0]。对于一种“更光滑”的做事方式,假设binaryArray[0]是最重要的一点,我会像这样编写你的循环:

toDecimal: function () {
    var decimalValue = 0;
    for (var i = 0; i < 8; i++){
        decimalValue = (decimalValue << 1) + self.binaryArray[i];
    }
    return decimalValue;
}

(左移只是乘以2的快捷方式。)

但是,我喜欢StephenH的建议:

toDecimal: function () {
    return parseInt(self.binaryArray.join(''), 2);
}

答案 1 :(得分:1)

为什么不使用JavaScript内置的parseInt函数?

语法:parseInt(string,radix);

var n = parseInt(“10001”,2);

n = 17