首页 > 解决方案 > “以 10 为底的二进制数”程序

问题描述

在我的 es6 编译器中,我正在研究一个将任何二进制数转换为 base-10 数的函数。基本上,1 和 0 都默认为 1。

这个项目只是 4 个 12 岁的孩子(我)的乐趣,所以,如果有其他人有工作要做,不要着急。无论如何,我发现问题在于,当您输入二进制数时,存储的数字以convertedNumQuery某种方式默认为 1,即使数字为 0。我已经尝试过到处调试,但也许这只是因为我是一个新手>.<

var numQuery = prompt("Enter a binary number to convert to base-10! Don't leave the \"0b\" in there.").split("");
var binaryChart = [1];
var convertedNumQuery = numQuery.map(Number);
var base10 = 0;
console.log(convertedNumQuery+ "\n");
for (var i = 0; i < (numQuery.length - 1); i++) {
    binaryChart.unshift(binaryChart[0]*2);
    console.log(binaryChart);
}
console.log(convertedNumQuery);
console.log("\n convertedNumQuery is array: " + Array.isArray(convertedNumQuery));
for (var i = 0; i < convertedNumQuery.length; i++ ) {
    if (convertedNumQuery[i] = 1) {
        base10 += binaryChart[i];
        console.log(convertedNumQuery[i]);
    }
}
console.log(base10);

假设我要转换的二进制数是 101010 或 42。预期结果 42 应该存储在 中base10,但最终发生的是每个数字binaryChart都相加得到 63。甚至更奇怪的是,当我查看convertedNumQuery在第 15 行中console.log(convertedNumQuery[i]);,该数组在控制台中记录为全 1。

标签: javascript

解决方案


为什么不直接使用parseInt进行转换:

params : (number,base)

console.log(parseInt(110101, 2))


推荐阅读