有人可以向我解释如何将十六进制代码(例如#FF9C19)转换为rgb值,相应的ex:(255,156,25),或者反过来使用JavaScript?
我找到了一个帖子,问这个但是它正在使用python。
答案 0 :(得分:1)
0x
或&h
等(您可能需要根据您的环境考虑这一点) 将这些放在一起并使用RegExp提取感兴趣的位,并parseInt
转换为 base 16 数字的 String 表示
function hex_to_RGB(hex) {
var m = hex.match(/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i);
return {
r: parseInt(m[1], 16),
g: parseInt(m[2], 16),
b: parseInt(m[3], 16)
};
}
// ex.
hex_to_RGB('#FF0110') // {r: 255, g: 1, b: 16}
当您向相反方向转换时,您将使用num.toString(16)
并且如果它们小于(dec) {,请不要忘记使用'0'
填充字节{1}}
如果您使用代表十六进制颜色的整数 16
开头,则可以使用 RGB 值来访问 RGB 值按位运算,即
i
答案 1 :(得分:0)
合法的十六进制颜色可以是'#'和rgb组件之后的3或6个字符
可以是0到255之间的百分比或数字。
function hexToRgb(c){
if(/^#([a-f0-9]{3}){1,2}$/.test(c)){
if(c.length== 4){
c= '#'+[c[1], c[1], c[2], c[2], c[3], c[3]].join('');
}
c= '0x'+c.substring(1);
return 'rgb('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+')';
}
return '';
}
function rgbToHex(rgb){
var c= rgb.match(/\d+(\.\d+)?%?/g);
if(c){
c= c.slice(0, 3).map(function(next){
var itm= next;
if(itm.indexOf('%')!= -1){
itm= Math.round(parseFloat(itm)*2.55);
}
if(itm<0) itm= 0;
if(itm>255) itm= 255;
itm= Math.round(itm).toString(16);
if(itm.length== 1) itm= '0'+itm;
return itm;
});
return '#'+c.join('').toLowerCase();
}
return '';
}