【问题标题】:Javascript convert decimal to hexadecimalJavascript将十进制转换为十六进制
【发布时间】:2024-06-28 03:55:01
【问题描述】:

我需要从十进制转换为十六进制并保留 0

我得到了什么

this.item = bytes[4].toString(16) + bytes[5].toString(16) + bytes[6].toString(16) + bytes[7].toString(16);

输出:

79 2e 2 e1

我想要:

79 2e 02 e1

【问题讨论】:

  • 放入整个代码,以便我能以更好的方式提供帮助或像字符串一样连接,然后它将 0 作为字符串并连接它

标签: javascript hex decimal


【解决方案1】:

因此,如果前导 0s 低于 10,则您希望将其填充到每个字节。

function toHex(bytes) {
  return bytes.reduce(function(string, byte) {
    return string + ("00" + byte.toString(16)).substr(-2);
  }, '');
}

【讨论】:

    【解决方案2】:

    此功能可让您将小数更改为 2 到 36 之间的任何新基数。
    例如 255 和 16 将返回 FF

    fromDecToBase:function(int, toNewBase) {
        var letters = ["0","1","2","3","4","5","6","7","8","9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
        var returnValue= "";
        if (toNewBase > 1 && toNewBase < 37) {
            while(int != 0) {
                rest = int % toNewBase;
                int = Math.floor(int / toNewBase);
                returnValue= letters[rest] + returnValue;
            }
        }
        return returnValue;
    },
    

    你需要做的就是检查字符串是否是2个字母长,可以通过以下方式完成:

    toHex:function(int) 
    {
        hex = fromDecToBase(int, 16);
        return hex.length == 1 ? "0"+hex:hex;
    },
    

    【讨论】:

      【解决方案3】:

      尝试检查每个变量并填充它们,如果它们不检查为 2 位数长:

      var str = "" + 1
      var pad = "00"
      var ans = pad.substring(0, pad.length - str.length) + str
      

      【讨论】:

        【解决方案4】:

        试试这个简单的。

        var Decimals=[12,1,34,5];
        var Hexstring="";
        Decimals.forEach(function(digit ) {
        Hexstring+=(" 00" + Number(digit).toString(16)).substr(-2);
        });
         console.log(Hexstring);
        

        Working Fiddle

        【讨论】: