(1 << 24) + red * (1 << 16) + green * (1 << 8) + blue;
let testColor = "rgb(20, 20, 20)";const rgbToHex = (color) => {let arr = color.split(',');let r = +arr[0].split('(')[1];let g = +arr[1];let b = +arr[2].split(')')[0];let value = (1 << 24) + r * (1 << 16) + g * (1 << 8) + b;value = value.toString(16);return '#' + value.slice(1);};console.log(rgbToHex(testColor)); // #141414console.log(rgbToHex('rgb(255, 255, 255)')) // #fffff
function RGB2Hex(rgb){var re = rgb.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");//利用正则表达式去掉多余的部分var hexColor = "#";var hex = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];for (var i = 0; i < 3; i++) {var r = null;var c = re[i];var hexAr = [];while (c > 16) {r = c % 16;c = (c / 16) >> 0;hexAr.push(hex[r]);}hexAr.push(hex[c]);hexColor += hexAr.reverse().join('');}return hexColor;}var co = "rgb(208, 204, 255)";console.log(RGB2Hex(co));
js进制转换
Number.parseInt(string , radix)
这个是把字符串(只能由字母和数字组成),这个只能是由低进制转高进制,如二进制转八进制,但是八进制不能转二进制,radix表示进制,取值2~36。
Number.parseInt('010',8); //8Number.parseInt('20',2); //NaNNumber.parseInt('0x16',16); // 22
Number.toString(radix)
这个函数只能将十进制数字转换为任意进制的字符串形式,同样,radix表示进制,取值2~36。
(10).toString(2); //"1010"转2进制(10).toString(16); //"a" 转16进制(1000).toString(36); //"rs" 转36进制//10进制转为16进制(10).toString(16) // =>"a"//8进制转为16进制(012).toString(16) // =>"a"//16进制转为10进制(0x16).toString(10) // =>"22"//16进制转为8进制(0x16).toString(8) // =>"26"//10进制转为2进制 //=>(1111).toString(2) // => "10001010111"//8进制转为2进制 //=>(01111).toString(2) //=>"1001001001"//16进制转为2进制 //=>(0x16).toString(2) // => "10110"
"#e6f7ff","#bae7ff","#91d5ff","#69c0ff","#40a9ff","#1890ff","#096dd9","#0050b3","#003a8c","#002766",
Ant Design 色板生成算法演进之路
https://zhuanlan.zhihu.com/p/32422584
antd 色彩
https://ant.design/docs/spec/colors-cn
Ant Design Colors
https://www.npmjs.com/package/@ant-design/colors
