1

10 進数から 2 進数へのコンバーターが動作していますが、常に 8 桁を表示するようにしたいので、3 を入力すると、「11」ではなく「00000011」と表示されます。私のコード:

<script type="text/javascript">
        function ConvertToBinary(dec) {
            var bits = [];
            var dividend = dec;
            var remainder = 0;
            while (dividend >= 2) {
                remainder = dividend % 2;
                bits.push(remainder);
                dividend = (dividend - remainder) / 2;
            }
            bits.push(dividend);
            bits.reverse();
            return bits.join("");


        }

<input type="text" id="txtDec" maxlength="3"/>
<input type="button" value="Convert" onclick="document.getElementById('spBin').innerHTML=ConvertToBinary(document.getElementById('txtDec').value);" />
<span id="spBin"></span>
4

4 に答える 4

3

基数を指定できるため、JavaScript はすでにtoStringメソッドを使用して数値から変換を行っています(上記のリンクを参照)。

var n = 13;
console.log(n.toString(2)) // "1101"

リード ゼロを追加する場合、8 未満の場合は次のようになります。

var bits = n.toString(2);

console.log("00000000".substr(bits.length) + bits);

たった1回のメソッド呼び出しで。

編集:この回答は 2013 年に書かれたもので、現在はパディングの代わりにメソッドpadStartを使用できます。

console.log(n.toString(2).padStart(8, "0"));
于 2013-10-17T20:04:12.487 に答える
1

これはどう:

return String('000000000' + bits.join("")).slice(-8);

デモ(「配当」を変更して別の数値で試す)

基本的に、左側に 8 個のゼロを追加し、左側から 8 文字を超える長さのものを削除します。

于 2013-10-17T19:59:46.780 に答える
0

bits.reverse(); 次のようにwhileループを実行する前にどうですか:

while(bits.length < 8){
    bits.push(0);
}
于 2013-10-17T19:59:49.570 に答える