2014-03-26 5 views
0

현재 RGB에서 16 진수 변환기로 변경 중이며 문제가 발생했습니다. 예를 들어 rgb(9,9,9)이 입력 된 경우 #090909 대신 #999으로 출력됩니다. 이것은 0에서 9까지의 값에 대해서만 문제가되는 것 같습니다 (0은 문제가되지 않지만).RGB에서 16 진 코드

내 현재 코드 : 당신이 볼 수 있듯이

c = type.slice(4).split(','); // type would be 'rgb(9,9,9)' 
c[2] = c[2].substring(0, c[2].length - 1); 

var s = '#'; 
for (i=0; i<3; i++) { 
    c[i] = +c[i] 
    s += c[i].toString(16); 
    console.log(s); 
} 

, 나는 적색, 녹색, 청색에 대해 별도의 입력이 없습니다. 전 단지 풀 컬러를 입력 할 수 있기를 원했습니다. 내 페이지가 아직 준비가되지 않았지만 지금은 중요하지 않아야하므로 자바 스크립트 콘솔에서 이것을 테스트했습니다. 나는 그것을 테스트 rgb(255,255,255) 입력하고 성공적으로 #ffffff의 출력을했다.

누군가가이 일을하도록 나를 도울 수 있다면. 감사.

+2

방금 ​​0에 넣어 수 없습니다를? 예 : if (i <10) {i = "0"+ i} –

답변

1

값이 16 (= 0x10)보다 작은 지 확인하십시오. 이 경우 앞에 0을 추가

s += (c[i] < 16 ? "0" : "") + c[i].toString(16); 
+0

글쎄 간단하지 않습니다. 작품 너무! 건배. – Spedwards

3

다음 16 진수 변환에 RGB를 수행합니다

function componentToHex(c) { 
    var hex = c.toString(16); 
    return hex.length == 1 ? "0" + hex : hex; 
} 

function rgbToHex(r, g, b) { 
    return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); 
} 

alert(rgbToHex(0, 51, 255)); // #0033ff 

또는

당신은 또한 코드 아래 사용할 수 있습니다. 다음 함수에서 지정된 색상 문자열이 이미 16 진수이면 문자열을 반환합니다. rgb 형식 인 경우 16 진수로 변환됩니다.

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)') 
+0

http://rgb2hex.com/public/scripts/app.js –

+0

내가 필요한 것을위한 완벽한 솔루션 : D – wrick17

1

이 간단한 JS 기능을 시도해보십시오 RGB 번호는 1 자리 긴 경우

function rgb2hex(rgb_color) { 
    var output = []; 
    var slots = rgb_color.trim().match(/^rgba?\(([0-9]+),([0-9]+),([0-9]+)(,[0-9]+)?\)$/i); 
    if (slots instanceof Array) { 
     for (var x = 1; x <= 3; x++) { 
      var _hex = parseInt(slots[x], 10).toString(16) + ""; 
      output.push(_hex.length == 2 ? _hex : "0" + _hex) 
     } 
    } 
    return "#" + output.join(""); 
} 

console.log(rgb2hex("rgb(9,9,9)")); 
관련 문제