2011-01-20 19 views
21

Jak przekonwertować liczby bajtów całkowitych z czerwonego, zielonego i niebieskiego na ciąg szesnastkowy, który można następnie przypisać do kontekstu renderowania na płótnie HTML5?Konwersja liczb całkowitych na ciąg szesnastkowy w JavaScript

Na przykład konwertować cyjan,

var r = 0; 
var g = 255; 
var b = 255; 

na ciąg szesnastkowy przypisanie koloru kontekst wypełnienia.

this.context.fillStyle = '#00FFFF'; 

Czy istnieje lepszy sposób na zrobienie tego w ogóle?

Odpowiedz

16

Wystarczy użyć wartości RGB, jak:

this.context.fillStyle = "rgb(0,255,255)"; 
+0

Najlepsze odpowiedzi są zawsze najprostsze! –

+0

Ale dziękuję wszystkim, którzy odpowiedzieli, że były interesujące odpowiedzi i cenne dla mojej wiedzy i zrozumienia. +1 każdy. –

+0

Czy ta przeglądarka jest kompatybilna? –

0

Możesz napisać własną metodę dla tej konwersji -

// function to generate the hex code 
function getHex(dec) 
{ 
    var hexArray = new Array("0", "1", "2", "3", 
           "4", "5", "6", "7", 
           "8", "9", "A", "B", 
           "C", "D", "E", "F"); 

    var code1 = Math.floor(dec/16); 
    var code2 = dec - code1 * 16; 

    var decToHex = hexArray[code2]; 

    return (decToHex); 
} 

oryginalne źródło - http://programming.top54u.com/post/Javascript-Convert-Decimal-to-Hex.aspx

+0

Spowoduje to konwersję tylko jednego przysmaku. –

+0

@El Ronnoco - Proszę sprawdzić link. Uruchomimy pętlę do wywoływania tej funkcji, gdy liczba dziesiętna jest większa niż 15. –

+0

-1 Nie trzeba przepisywać toString – Tomas

1
function pad(number, length) { 
    var str = '' + number; 
    while (str.length < length) str = '0' + str; 
    return str; 
} 

function toRGBHex(r,g,b) { 
    return pad(r.toString(16),2) + pad(g.toString(16),2) + pad(b.toString(16),2); 
} 
24

do konwersji od numeru do szesnastka, możesz użyć wbudowanej funkcji toString (16). Prosty kod:

function convert(integer) { 
    var str = Number(integer).toString(16); 
    return str.length == 1 ? "0" + str : str; 
}; 

function to_rgb(r, g, b) { return "#" + convert(r) + convert(g) + convert(b); } 

var color = to_rgb(r, g, b); 
11

myślę, najprostszym sposobem jest:

 
var g = 255; 
g.toString(16); //gives "ff" 

Użyj funkcji, które daje język.

+7

W tej odpowiedzi brakuje wypełnienia 0 koniecznego dla heksadecymalnych wartości kolorów. – Phrogz

+2

"0x" + g.toString (16), dodaj przedrostek jest całkiem prosty – raykin

1

Aby przekonwertować poszczególne wartości RGB na kolor heksadecymalny, można użyć tej funkcji, chociaż bardziej sensowne jest użycie zamiast tego wartości "rgb("+r+","+g+","+b+")".

function rgbToHex(r,g,b) { 
    return "#"+("00000"+(r<<16|g<<8|b).toString(16)).slice(-6); 
} 
+0

~ fyi Włączyłem twoją edycję do mojej odpowiedzi, mimo że została ona odrzucona. http://stackoverflow.com/questions/17945972/converting-rgba-values-into-one-integer-in-javascript/17946089#17946089 (nie ma dobrego sposobu, aby wysłać wiadomość tutaj) – MightyPork

+0

@MightyPork oh, w porządku, dzięki za opowiadanie mnie. Tak, powinien istnieć sposób na odesłanie ludzi tutaj. No cóż. – kamoroso94

Powiązane problemy