我有一个工作的十进制到二进制转换器,但我希望它总是显示8位数, 所以,如果我输入3,它将说'00000011'而不是'11' 有人知道如何做到这一点? 我的代码:
<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>
答案 0 :(得分:2)
JavaScript已使用toString方法从数字中为您进行转换,因为您可以指定 radix (请参阅上面的链接):
var n = 13;
console.log(n.toString(2)) // "1101"
如果你想增加零线,如果少于8,你可以:
var bits = n.toString(2);
console.log("00000000".substr(bits.length) + bits);
只需一个方法调用。
答案 1 :(得分:1)
这个怎么样:
return String('000000000' + bits.join("")).slice(-8);
Demo(更改“红利”以尝试使用不同的数字)
基本上在左侧添加8个零,然后从左侧删除超过8个字符的任何内容。
答案 2 :(得分:0)
在bits.reverse();
之前怎么样你做这样的while循环:
while(bits.length < 8){
bits.push(0);
}
答案 3 :(得分:0)
这是一个示例解决方案,它将使用零填充数字
@param“num”用零填充的数字
@param“width”结果所需的字符数
@return String左边填充的数字
function zeroFill(num, width) {
str = String((new Array(width+1)).join('0') + num).slice(-width)
return str
}
还有其他解决方案使用循环来创建零。