Javascript RGB到十六进制转换-确保数字为0-255
RGB到十六进制的转换。下面的代码将rgb转换为十六进制。有一个问题,r、g或b必须介于0和255之间。目前,如果它们低于0,我的代码不会将它们四舍五入到0。我不知道为什么?此外,我需要确保最大值为255。有什么建议吗Javascript RGB到十六进制转换-确保数字为0-255,javascript,hex,rgb,Javascript,Hex,Rgb,RGB到十六进制的转换。下面的代码将rgb转换为十六进制。有一个问题,r、g或b必须介于0和255之间。目前,如果它们低于0,我的代码不会将它们四舍五入到0。我不知道为什么?此外,我需要确保最大值为255。有什么建议吗 function rgb(r, g, b){ var newarr = []; newarr.push(r, g, b ); var b = newarr.map(function(x){ if (isNaN(x) === true ) { if
function rgb(r, g, b){
var newarr = [];
newarr.push(r, g, b );
var b = newarr.map(function(x){
if (isNaN(x) === true ) {
if ( x > 0 ) {
parseInt(x).toString(16);
return (x.length==1) ? "0"+x : x;
} else {
x = 0 ;
parseInt(x).toString(16);
return (x.length==1) ? "0"+x : x;
}
} else {
parseInt(x).toString(16);
return (x.length==1) ? "0"+x : x;
}
});
var tos = String(b) ;
var fin = tos.replace(/,/g," ");
fint = fin.replace(/\s/g,'');
document.write(fint);
}
rgb('0','0','-14');
此示例当前返回:
0000-14
您的代码可能更简单:
function rgb(r, g, b){
return [r, g, b].map(function(v) {
return ('0' +
Math.min(Math.max(parseInt(v), 0), 255)
.toString(16)
).slice(-2);
}).join('');
}
您的代码可以简单得多:
function rgb(r, g, b){
return [r, g, b].map(function(v) {
return ('0' +
Math.min(Math.max(parseInt(v), 0), 255)
.toString(16)
).slice(-2);
}).join('');
}
谢谢,但是如果您的代码中输入了一位数字r、g、b,则您的代码不会添加额外的
0
。例如4,45,155。它必须在4之前加一个零,这样它就是04。十六进制代码必须是6个字符长。谢谢,代码现在是完美的。我想知道你能否解释一下为什么要用切片?我不明白为什么这里有必要?如果你愿意,我将不胜感激。谢谢你的帮助。@mattnewbie我不明白为什么这里需要它?它不做零填充。有关详细信息,请参阅。顺便说一句:如果这个答案能解决你的问题,你可以选择“接受”。谢谢,知道这个答案非常有用。谢谢,但是如果在r、g、b中输入了一位数字,你的代码不会添加额外的0
。例如4,45,155。它必须在4之前加一个零,这样它就是04。十六进制代码必须是6个字符长。谢谢,代码现在是完美的。我想知道你能否解释一下为什么要用切片?我不明白为什么这里有必要?如果你愿意,我将不胜感激。谢谢你的帮助。@mattnewbie我不明白为什么这里需要它?它不做零填充。有关详细信息,请参阅。顺便说一句:如果这个答案能解决你的问题,你可以选择“接受”。谢谢你,知道这个答案很有用。