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


当前回答

总结一下;

function toHex(i, pad) {

  if (typeof(pad) === 'undefined' || pad === null) {
    pad = 2;
  } 

  var strToParse = i.toString(16);

  while (strToParse.length < pad) {
    strToParse = "0" + strToParse;
  }

  var finalVal =  parseInt(strToParse, 16);

  if ( finalVal < 0 ) {
    finalVal = 0xFFFFFFFF + finalVal + 1;
  }

  return finalVal;
}

然而,如果不需要在结尾将其转换回整数(即颜色),那么只需确保值不是负值就足够了。

其他回答

如果数字是负数?

这是我的版本。

function hexdec (hex_string) {
    hex_string=((hex_string.charAt(1)!='X' && hex_string.charAt(1)!='x')?hex_string='0X'+hex_string : hex_string);
    hex_string=(hex_string.charAt(2)<8 ? hex_string =hex_string-0x00000000 : hex_string=hex_string-0xFFFFFFFF-1);
    return parseInt(hex_string, 10);
}
var number = 3200;
var hexString = number.toString(16);

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

将十六进制颜色数字转换为十六进制颜色字符串:

使用toString和ES6 padStart将十六进制颜色数字转换为十六进制颜色字符串的简单解决方案。

const string = `#${color.toString(16).padStart(6, '0')}`;

例如:

0x000000将变为#0000000xFFFFFF将变为#FFFFFF

请在此处仔细检查此示例

AFAIK评论57807是错误的,应该是这样的:var hex=数字(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;
}

以下是我的解决方案:

hex = function(number) {
  return '0x' + Math.abs(number).toString(16);
}

问题是:“如何在JavaScript中将十进制转换为十六进制”。虽然这个问题没有指定十六进制字符串应该以0x前缀开头,但编写代码的任何人都应该知道,0x被添加到十六进制代码中,以将十六进制代码与编程标识符和其他数字区分开来(1234可以是十六进制、十进制甚至八进制)。

因此,为了正确回答这个问题,为了编写脚本,必须添加0x前缀。

Math.abs(N)函数将负转换为正,作为一个额外的好处,它看起来不像是有人在碎木机上运行它。

我想要的答案应该有一个字段宽度说明符,因此我们可以显示8/16/32/64位值,就像您在十六进制编辑应用程序中看到的那样。这才是真正正确的答案。