RGB与16进制颜色值的相互转换
程序员文章站
2024-03-18 14:45:34
...
提纲
javaScript语言中通过parseInt()和toString()进行数字与字符串之间的转换,这种相互间的转换在许多方面都有应用场景。
字符串转数字:parseInt(str, rad);
数字转字符串: toString(rad);
注意
- 一般通常用paseInt()的时候不写第二个参数,即不指定进制转换的基数时,有可能不会转换成功,结果为NaN, 指定第二个参数,便于parseInt函数识别字符串代表的数据类型,这个方法可用于颜色值从16进制转为十进制rgb(r,g,b)值。
- 同样一般在用toString()时,也可以不指定进制转换基数(默认为10,即默认转化为10进制数),但如果要转化为指定进制的数就需要指定基数了,这个方法可应用于颜色的rgb转16进制颜色。
场景1:
背景:
一道百度面试题目
需求:
将16进制颜色如#ffffff转为RGB(255,255,255)的形式
方案:
parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数
代码:
function transformHEXToGRB(str){
let r = str.slice(1,3);
let g = str.slice(3,5);
let b = str.slice(5);
return 'rgb('+parseInt(r,16)+','+parseInt(g,16)+','+parseInt(b,16)+')';
}
transformHEXToGRB('#ffffff') // rgb(255, 255,255)
场景2:
rgb转16进制颜色值
代码
function transformHEXToGRB(str){
let value = str.slice(4,-1);
let arr=value.split(',');
let re="#"
arr.forEach(v=>{
re+=parseInt(v).toString(16)
})
console.log(re)
}
transformHEXToGRB('rgb(155, 225,2)')// #9be12