Javascript二进制到十进制计算器
我不知道为什么这个代码不起作用,有人能帮忙吗:Javascript二进制到十进制计算器,javascript,binary,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); cou
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]
第二
你能提供一种更巧妙的方法来计算计数器吗?就我个人而言,我不知道如何从I值计算计数器,这应该不会太难,简单的数学
谢谢为什么不直接使用JavaScript的内置功能呢 语法:parseIntstring,基数 var n=parseInt10001,2
n=17您的原始循环从不处理二进制数组[0]。至于一种更巧妙的方法,假设binaryArray[0]是最重要的位,我会这样编写循环:
toDecimal: function () {
var decimalValue = 0;
for (var i = 0; i < 8; i++){
decimalValue = (decimalValue << 1) + self.binaryArray[i];
}
return decimalValue;
}
变量self set在哪里?应该是最高有效位:binaryArray[0]还是binaryArray[7]?此外,循环终止条件需要为i>=0;否则,您永远不会处理binaryArray[0]上的值。为什么不使用parseInt转换它?二元结构,2;在父函数中,module.exports=函数{return{toDecimal:function{};};好的,那么变量自声明和初始化在哪里?我忘记了parseInt!:@No1_Melman-显式循环将更加高效,因此,如果性能非常关键,请避免使用join/parseInt方法。但还必须记住,按位操作将位大小限制为32。而另一种方法仅限于Javascript的最大整数精度,在本例@Xotic750中并不重要-你说得对。但是,可以简单地替换小数点是的,只是一个观察,它会在一定程度上改变性能,尽管循环速度更快;
toDecimal: function () {
return parseInt(self.binaryArray.join(''), 2);
}