将rgb转换为十六进制

时间:2014-01-21 05:14:51

标签: javascript hex rgb

我想找到一种方法来编写一个程序,它可以将包含负整数的rgb转换成十六进制数,就像这个软件一样。

http://www.javascripter.net/faq/rgbtohex.htm

我已经有了这个,但似乎没有使用rgb:

rgb(-5,231,-17)

function rgb2hex(rgb){
 rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
 return (rgb && rgb.length === 4) ? "#" +
  ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
  ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
  ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : '';
}

感谢任何可以提供帮助的人!

1 个答案:

答案 0 :(得分:0)

试试这个,

    function colorToHex(color) {
        if (color.substr(0, 1) === '#') {
            return color;
        }
        var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);

        var red = parseInt(digits[2]);
        var green = parseInt(digits[3]);
        var blue = parseInt(digits[4]);

        var rgb = blue | (green << 8) | (red << 16);
        return digits[1] + '#' + rgb.toString(16);
    };

    colorToHex('rgb(120, 120, 240)');

参考:http://haacked.com/archive/2009/12/29/convert-rgb-to-hex.aspx/