我真的很难为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));
答案 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);
}