(1 << 24) + red * (1 << 16) + green * (1 << 8) + blue;

    1. let testColor = "rgb(20, 20, 20)";
    2. const rgbToHex = (color) => {
    3. let arr = color.split(',');
    4. let r = +arr[0].split('(')[1];
    5. let g = +arr[1];
    6. let b = +arr[2].split(')')[0];
    7. let value = (1 << 24) + r * (1 << 16) + g * (1 << 8) + b;
    8. value = value.toString(16);
    9. return '#' + value.slice(1);
    10. };
    11. console.log(rgbToHex(testColor)); // #141414
    12. console.log(rgbToHex('rgb(255, 255, 255)')) // #fffff
    1. function RGB2Hex(rgb){
    2. var re = rgb.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");//利用正则表达式去掉多余的部分
    3. var hexColor = "#";
    4. var hex = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
    5. for (var i = 0; i < 3; i++) {
    6. var r = null;
    7. var c = re[i];
    8. var hexAr = [];
    9. while (c > 16) {
    10. r = c % 16;
    11. c = (c / 16) >> 0;
    12. hexAr.push(hex[r]);
    13. }
    14. hexAr.push(hex[c]);
    15. hexColor += hexAr.reverse().join('');
    16. }
    17. return hexColor;
    18. }
    19. var co = "rgb(208, 204, 255)";
    20. console.log(RGB2Hex(co));

    js进制转换
    Number.parseInt(string , radix)
    这个是把字符串(只能由字母和数字组成),这个只能是由低进制转高进制,如二进制转八进制,但是八进制不能转二进制,radix表示进制,取值2~36。

    1. Number.parseInt('010',8); //8
    2. Number.parseInt('20',2); //NaN
    3. Number.parseInt('0x16',16); // 22

    Number.toString(radix)
    这个函数只能将十进制数字转换为任意进制的字符串形式,同样,radix表示进制,取值2~36。

    1. (10).toString(2); //"1010"转2进制
    2. (10).toString(16); //"a" 转16进制
    3. (1000).toString(36); //"rs" 转36进制
    4. //10进制转为16进制
    5. (10).toString(16) // =>"a"
    6. //8进制转为16进制
    7. (012).toString(16) // =>"a"
    8. //16进制转为10进制
    9. (0x16).toString(10) // =>"22"
    10. //16进制转为8进制
    11. (0x16).toString(8) // =>"26"
    12. //10进制转为2进制 //=>
    13. (1111).toString(2) // => "10001010111"
    14. //8进制转为2进制 //=>
    15. (01111).toString(2) //=>"1001001001"
    16. //16进制转为2进制 //=>
    17. (0x16).toString(2) // => "10110"
    1. "#e6f7ff",
    2. "#bae7ff",
    3. "#91d5ff",
    4. "#69c0ff",
    5. "#40a9ff",
    6. "#1890ff",
    7. "#096dd9",
    8. "#0050b3",
    9. "#003a8c",
    10. "#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