我不知道为什么这段代码不起作用,任何人都可以帮忙:
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值计算计数器,这不应该太难,简单的数学真的。
由于
答案 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)