如何对数字进行零填充?

时间:2013-10-17 19:54:20

标签: javascript binary decimal converter

我有一个工作的十进制到二进制转换器,但我希望它总是显示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>

4 个答案:

答案 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
}

还有其他解决方案使用循环来创建零。