美文网首页
js颜色进制之间的转换

js颜色进制之间的转换

作者: 前端Lily | 来源:发表于2020-03-10 16:04 被阅读0次

十进制、十六进制、RGBA颜色值之间的相互转换

10进制转rgba

    // 10进制转rgba 
    function decToRgba(number) {
        const blue = number & 0xff;
        const green = number >> 8 & 0xff;
        const red = number >> 16 & 0xff;
        number = number >> 24 & 0xff;
        const alpha = (number / 0xff).toFixed(2);
        return `rgba(${red}, ${green}, ${blue}, ${alpha})`;
    }

rgb转16进制

    // rgb转16进制
    function rgbToHex(rgb) {
        const regexp = /[0-9]{0,3}/g;
        const re = rgb.match(regexp).filter(f => f).map(Number);
        let hexColor = '';
        const hex = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
        for (let i = 0; i < re.length; i++) {
            let r = null, c = re[i], l = c;
            const hexAr = [];
            while (c > 16) {
                r = c % 16;
                c = (c / 16) >> 0;
                hexAr.push(hex[r]);
            } hexAr.push(hex[c]);
            if (l < 16) {
                hexAr.push(0);
            }
            hexColor += hexAr.reverse().join('');
        }
        return '#' + hexColor;
    }

16进制转10进制

    // 16进制转10进制
    function hexToDec(hexColor, alpha) {
        if (!hexColor.includes('#')) {
            return hexColor;
        }
        const hexColorArr = hexColor.slice(hexColor.indexOf('#') + 1).split('');
        let resultArr = [];
        for (let i = 0; i < hexColorArr.length; i += 2) {
            resultArr.push(hexColorArr.slice(i, i + 2));
        }
        let result = [];
        resultArr.forEach((res) => {
            let sum = 0;
            res.reverse().forEach((char, index) => {
                sum += charToNumber(char) * Math.pow(16, index);
            });
            result.push(sum);
        });
        const a = alpha ? Math.round(alpha * 0xff) : 0xff;
        return (result[0] << 16 | result[1] << 8 | result[2] | a << 24).toString(); // 235676553
    }
    
    function charToNumber(char) {
        switch (char) {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                return parseInt(char, 10);
            case 'a':
                return 10;
            case 'b':
                return 11;
            case 'c':
                return 12;
            case 'd':
                return 13;
            case 'e':
                return 14;
            case 'f':
                return 15;
            default:
                return 0;
        }
    }

完整代码链接: github.

示例截图

相关文章

  • js颜色进制之间的转换

    十进制、十六进制、RGBA颜色值之间的相互转换 10进制转rgba rgb转16进制 16进制转10进制 完整代码...

  • js的进制转换

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()...

  • JS 颜色RGB与16进制转换核心

    JavaScript颜色转换的核心就是进制间的转换。RGB格式其实就是十进制表示法,所以,十六进制颜色与RGB颜色...

  • 颜色格式转换工具

    ColorConverter 颜色格式转换工具 Example rgb和16进制位颜色转换 rgba和16进制位转...

  • 二进制、八进制、十进制、十六进制之间转换

    (一)、进制之间的转换 八进制:0-7 十六进制:0-F 1、十进制 与 二进制之间的转换 (1)、十进制转换为二...

  • 16进制颜色转换

    // 16进制颜色转换 //用法

  • 从零学java笔录-第6篇 进制之间转换

    本讲主要内容: 1:进制理解 2:进制之间转换 3:负数的进制 正文 进制之间的转换: 二进制、八进制、十进制、十...

  • IOS 颜色转换

    颜色转换一:透明度固定为1,以0x开头的十六进制转换成的颜色 颜色转换二: 0x开头的十六进制转换成的颜色,透明度...

  • python 进制转换

    如何表示二进制 任意进制之间的转换 任意进制转换成二进制--bin 任意进制转换成十进制--int 3.任意进制转...

  • iOS 二进制转换以及位运算

    进制之间的转换 十进制与二进制之间转换二进制转成十进制整数部分从个位开始,依次从2的0次方开始,让每位相加即可转换...

网友评论

      本文标题:js颜色进制之间的转换

      本文链接:https://www.haomeiwen.com/subject/yttgdhtx.html