如何在JavaScript中将十进制值转换为十六进制值?
当前回答
结合RGB值到十六进制函数的一些好主意(在HTML/CSS的其他地方添加#):
function rgb2hex(r,g,b) {
if (g !== undefined)
return Number(0x1000000 + r*0x10000 + g*0x100 + b).toString(16).substring(1);
else
return Number(0x1000000 + r[0]*0x10000 + r[1]*0x100 + r[2]).toString(16).substring(1);
}
其他回答
如果您需要处理位字段或32位颜色之类的事情,那么您需要处理带符号的数字。JavaScript函数toString(16)将返回一个负十六进制数,这通常不是您想要的。这个函数做了一些疯狂的加法,使其成为正数。
函数decimalToHexString(数字){如果(数字<0){number=0xFFFFFFFF+number+1;}return number.toString(16).toUpperCase();}console.log(decimalToHexString(27));console.log(decimalToHexString(48.6));
以下是我的解决方案:
hex = function(number) {
return '0x' + Math.abs(number).toString(16);
}
问题是:“如何在JavaScript中将十进制转换为十六进制”。虽然这个问题没有指定十六进制字符串应该以0x前缀开头,但编写代码的任何人都应该知道,0x被添加到十六进制代码中,以将十六进制代码与编程标识符和其他数字区分开来(1234可以是十六进制、十进制甚至八进制)。
因此,为了正确回答这个问题,为了编写脚本,必须添加0x前缀。
Math.abs(N)函数将负转换为正,作为一个额外的好处,它看起来不像是有人在碎木机上运行它。
我想要的答案应该有一个字段宽度说明符,因此我们可以显示8/16/32/64位值,就像您在十六进制编辑应用程序中看到的那样。这才是真正正确的答案。
var number = 3200;
var hexString = number.toString(16);
16是基数,十六进制数中有16个值:-)
使用以下命令将数字转换为十六进制字符串:
hexString = yourNumber.toString(16);
并通过以下方式反转该过程:
yourNumber = parseInt(hexString, 16);
如果您希望转换为“完整”的JavaScript或CSS表示形式,可以使用以下方法:
numToHex = function(num) {
var r=((0xff0000&num)>>16).toString(16),
g=((0x00ff00&num)>>8).toString(16),
b=(0x0000ff&num).toString(16);
if (r.length==1) { r = '0'+r; }
if (g.length==1) { g = '0'+g; }
if (b.length==1) { b = '0'+b; }
return '0x'+r+g+b; // ('#' instead of'0x' for CSS)
};
var dec = 5974678;
console.log( numToHex(dec) ); // 0x5b2a96