如何在JavaScript中将小数转换为十六进制?

时间:2020-03-05 18:51:53  来源:igfitidea点击:

如何在JavaScript中将十进制值转换为其等效的十六进制?

解决方案

回答

使用以下命令将数字转换为十六进制字符串:

hexString = yourNumber.toString(16);

并通过以下步骤逆转该过程:

yourNumber = parseInt(hexString, 16);

回答

下面的代码会将十进制值d转换为十六进制。它还允许我们将填充添加到十六进制结果中。因此默认情况下0将变为00。

function decimalToHex(d, padding) {
    var hex = Number(d).toString(16);
    padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;

    while (hex.length < padding) {
        hex = "0" + hex;
    }

    return hex;
}

回答

var number = 3200;
var hexString = number.toString(16);

16是基数,十六进制数中有16个值:-)

回答

如果需要处理位字段或者32位颜色之类的内容,则需要处理带符号的数字。 javascript函数toString(16)将返回一个负十六进制数,通常这不是我们想要的。此功能做了一些疯狂的添加,使其成为正数。

function decimalToHexString(number)
{
  if (number < 0)
  {
    number = 0xFFFFFFFF + number + 1;
  }

  return number.toString(16).toUpperCase();
}

console.log(decimalToHexString(27));
console.log(decimalToHexString(48.6));

回答

function dec2hex(i)
{
  var result = "0000";
  if      (i >= 0    && i <= 15)    { result = "000" + i.toString(16); }
  else if (i >= 16   && i <= 255)   { result = "00"  + i.toString(16); }
  else if (i >= 256  && i <= 4095)  { result = "0"   + i.toString(16); }
  else if (i >= 4096 && i <= 65535) { result =         i.toString(16); }
  return result
}

回答

AFAIK评论5780​​7是错误的,应该是这样的:
var hex = Number(d).toString(16);
代替
var hex = parseInt(d,16);

function decimalToHex(d, padding) {
    var hex = Number(d).toString(16);
    padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;

    while (hex.length < padding) {
        hex = "0" + hex;
    }

    return hex;
}

回答

没有循环:

function decimalToHex(d) {
  var hex = Number(d).toString(16);
  hex = "000000".substr(0, 6 - hex.length) + hex; 
  return hex;
}

//or "#000000".substr(0, 7 - hex.length) + hex;
//or whatever
//*Thanks to MSDN

也最好不要使用必须进行评估的循环测试
例如代替:

for (var i = 0; i < hex.length; i++){}

for (var i = 0, var j = hex.length; i < j; i++){}