Ja, altså. Hvis jeg har en farve der er udregnet til ex. 255,0,0. For at jeg kan bruge den i Flash skal jeg vel have formatet 0xff0000. Hvordan klarer jeg det?
øh, vil du have at det skal konverteres automatisk, for så skal du vidst selv skrive et program eller funktion som gør det, men hvis du bare vil vide hex værdien så kan du bruge windows calculator i scientific mode den kan konvertere fra decimaltal til hex
Så skal jeg altså gange de to tal tilsvarende. Og hvilke tal var 10000 og 100 i ovenstående? Netop basens (10) opløftet til antallet af 0'er efter. 100 = 10^2, 10000=10^4. Tilsvarende skal hex tal ganges med 16^4 (kan skrives som 0x10000) og 16^2 (kan skrives som 0x100):
0xFF * 0x10000 + 0xAA * 0x100 + 0x55 = 0xFFAA55
At gange med ting, som 2 går op i (2 går op i 16, 2 går altså op i 16^n for ethvert n tilhører Z) så kan de skrives med << operatoren. At gange med 16^n er at gange med 2^(4*n), altså:
0xFF * 16^4 = 0xFF * 2^16 = 0xFF << 16
Samlet får vi:
0xFF << 16 + 0xAA << 8 + 0x55 = 0xFFAA55
Og netop fordi ovennævnte tal ganges, så de ikke har overlappende bits (orker jeg ikke lige at forklare ;)), så kan addition laves via binær OR:
0xFF << 16 | 0xAA << 8 | 0x55 = 0xFFAA55
Og selvom vores input tal ikke er beskrevne som ovenstående hextal, vil resultatet selvfølgelig være det samme:
255 << 16 | 170 << 8 | 85 = 0xFFAA55 = 16755285
Tal er tal. Hex-tal er bare en notationsform, som kan være meget praktisk nogle gange, ligesom decimal-tal kan være praktiske.
Hm, dette kvalificerer vist for en lille artikel ;)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.