2014-01-21 68 views
0

我想找到一种方法来编写一个程序,该程序可以将任意rgb(包括具有负整数的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) : ''; 
} 

由于任何人谁可以帮忙!

+0

究竟做了负RGB分量呢? –

+0

可能的重复:http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb –

+0

@JonathonReinhart只是猜测,但它是衡量用户不喜欢那种颜色? :d –

回答

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/