如何在JavaScript中将十进制值转换为十六进制值?
当前回答
带填充:
function dec2hex(i) {
return (i+0x10000).toString(16).substr(-4).toUpperCase();
}
其他回答
为了完整起见,如果您想要负数的二进制补码十六进制表示,可以使用零填充右移>>运算符。例如:
> (-1).toString(16)
"-1"
> ((-2)>>>0).toString(16)
"fffffffe"
然而,有一个限制:JavaScript按位运算符将其操作数视为32位的序列,也就是说,您将得到32位2的补码。
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
}
将十六进制颜色数字转换为十六进制颜色字符串:
使用toString和ES6 padStart将十六进制颜色数字转换为十六进制颜色字符串的简单解决方案。
const string = `#${color.toString(16).padStart(6, '0')}`;
例如:
0x000000将变为#0000000xFFFFFF将变为#FFFFFF
请在此处仔细检查此示例
对于任何感兴趣的人,这里有一个JSFiddle比较了这个问题的大多数答案。
下面是我最终采用的方法:
function decToHex(dec) {
return (dec + Math.pow(16, 6)).toString(16).substr(-6)
}
此外,请记住,如果您希望将十进制转换为十六进制,以便在CSS中用作颜色数据类型,那么您可能更喜欢从十进制中提取RGB值并使用RGB()。
例如(JSFiddle):
let c = 4210330 // your color in decimal format
let rgb = [(c & 0xff0000) >> 16, (c & 0x00ff00) >> 8, (c & 0x0000ff)]
// Vanilla JS:
document..getElementById('some-element').style.color = 'rgb(' + rgb + ')'
// jQuery:
$('#some-element').css('color', 'rgb(' + rgb + ')')
这将#some元素的CSS颜色属性设置为rgb(64、62、154)。
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;
}