3

したがって、これは怒りです。単純な方程式の結果が乱数になり、私にはほとんど意味がありません。

わかりましたので、Binary から Base Ten に変換するアプリを作成しようとしています。これを行う1つの方法は、これを行うことです。

たとえば、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 の場合、inputarray は 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];
}

ところで、「decvalue」はコードの先頭で 0 に事前設定されています。

説明やその他の質問については、コメントしてください。ややこしいです。

4

3 に答える 3

3

JavaScript はこれをネイティブに実行できます。

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

// other way:

var decimal = 1234;
var binary = decimal.toString(2);
于 2013-01-02T21:26:11.433 に答える
0

桁が表す値ではなく、文字コードを追加しています。 or which は文字列であるため、文字列として追加されます.charAt()'0''1'

値をプッシュする方法を次のように変更することをお勧めします。

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

また

inputarray.push(nextletter * 1)
于 2013-01-02T21:26:53.693 に答える
0

入力配列で文字を取得しているため、JavaScript は結果を文字列に変換しています。

var a = 0; a = a * 2 + '1'; alert(a); //alerts "01"

目的の動作を得るには、文字列をキャストする必要があります。

var a = 0; a = a * 2 + Number('1'); alert(a); //alerts 1

一般に、これを行うにはより良い方法があります(@Kolinkの回答など)

詳細については、 http://www.quirksmode.org/js/strings.html#stringnumを参照してください。

于 2013-01-02T21:27:35.270 に答える