【问题标题】:How do I zero-fill a number?如何将数字填零?
【发布时间】:2013-10-26 11:47:03
【问题描述】:

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

【问题讨论】:

    标签: javascript binary decimal converter


    【解决方案1】:

    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);
    

    只需一个方法调用。

    编辑:这个答案写于 2013 年,现在可以使用方法 padStart 代替填充:

    console.log(n.toString(2).padStart(8, "0"));
    

    【讨论】:

      【解决方案2】:

      这个怎么样:

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

      Demo(更改“股息”以尝试不同的数字)

      基本上在左侧添加 8 个零,然后从左侧删除超过 8 个字符的长度。

      【讨论】:

        【解决方案3】:

        bits.reverse(); 之前怎么样,你做一个这样的 while 循环:

        while(bits.length < 8){
            bits.push(0);
        }
        

        【讨论】:

          【解决方案4】:

          这是一个用零填充数字的示例解决方案

          @param "num" 左填充零的数字

          @param "width" 结果所需的字符数

          @return String 左边的数字

          function zeroFill(num, width) {
          str = String((new Array(width+1)).join('0') + num).slice(-width)
          return str
          }
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-23
            • 1970-01-01
            • 1970-01-01
            • 2014-10-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多