Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的JavaScript公式有问题(二进制到十进制转换器的一部分)_Javascript_Binary_Decimal_Converter_Equation - Fatal编程技术网

我的JavaScript公式有问题(二进制到十进制转换器的一部分)

我的JavaScript公式有问题(二进制到十进制转换器的一部分),javascript,binary,decimal,converter,equation,Javascript,Binary,Decimal,Converter,Equation,所以这是一种愤怒,一个简单的方程会产生一个随机数,我对此几乎没有什么意义 好的,所以我正在尝试制作一个从二进制转换为十进制的应用程序。我知道一种方法就是这样做 比如说,11001到10的基数 取最左边的数字:1 0 * 2 + 1(This 1 is the leftmost binary digit) = 1... 1 * 2 + 1(This 1 is the second leftmost binary digit) = 3... 3 * 2 + 0(etc...) = 6... 6 *

所以这是一种愤怒,一个简单的方程会产生一个随机数,我对此几乎没有什么意义

好的,所以我正在尝试制作一个从二进制转换为十进制的应用程序。我知道一种方法就是这样做

比如说,11001到10的基数

取最左边的数字:1

0 * 2 + 1(This 1 is the leftmost binary digit) = 1...
1 * 2 + 1(This 1 is the second leftmost binary digit) = 3...
3 * 2 + 0(etc...) = 6...
6 * 2 + 0 = 12...
12 * 2 + 1 = 25...
所以,正确地转换成25。尽管如此,当我在JavaScript中插入带有变量的等式时,结果却是随机的废话

观察:

Inputarray是用户输入的数字中所有字符的数组。如果是11010,那么输入数组是1,1,0,1,0

然后它在数组的每个字符上循环,并将每个数字插入到等式中,如图所示

for (var j=0;j<=uinputlen;j++) {
var nextletter = uinput.charAt(j);
inputarray.push(nextletter);
}

for (var h=0;h<=uinputlen;h++) {
decvalue = decvalue * 2 + inputarray[h];
}

for(var j=0;jJavaScript可以通过本机实现这一点:

var binary = "11001";
var decimal = parseInt(binary,2);

// other way:

var decimal = 1234;
var binary = decimal.toString(2);

您正在添加字符代码,而不是数字表示的值。
.charAt()
将返回
'0'
'1'
,这是一个字符串,因此将作为字符串添加

我建议您更改将值推送到以下位置的方式:

inputarray.push(nextletter == '1' ? 1 : 0)


由于您在输入数组中获取字符,JavaScript正在将结果转换为字符串:


var a=0;
a=a*2+1';
警报(a);//警报“01”

为了获得所需的行为,您需要强制转换字符串:


var a=0;
a=a*2+数字('1');
警报(a);//警报1

一般来说,有更好的方法可以做到这一点(比如@Kolink的答案)


有关详细信息,请参阅。

charAt返回该位置的字符串,向字符串中添加一个数字后,它不会转换为字符代码。因此,这是将其转换为十进制还是将其转换为字符串?第一个使用
parseInt
将二进制转换为十进制。第二个使用
parseInt>将十进制转换为二进制
toString
。在这两种情况下,
2
都告诉JavaScript您需要二进制。您可以使用类似的代码转换成几乎任何基。你在开玩笑吧,我花了几个小时在这方面,我本来可以做到的!!!!!啊!啊!啊!啊!我犯了同样的错误;)查看到目前为止给出的答案,似乎没有人听说过
parseInt
toString
。。。甚至是位移位运算符。太棒了!投票表决
inputarray.push(nextletter * 1)