web-dev-qa-db-fra.com

Comment fonctionne la couleur hexadécimale?

Que signifie l'hexadécimal qui représente une couleur CSS? Comment savoir de quelle couleur il s'agit sans mémoriser le code exact? At-il des relations avec le système RVB (et CMJN)?
Je pensais un instant que FF signifiait 255 en RVB, mais j’ai alors réalisé que 15 ^ 2 n’était pas 255, mais 225.

13
jasonszhao

Hexadécimal utilise seize symboles distincts, dans le cas de CSS, les symboles 0–9 pour représenter les valeurs de zéro à neuf (évidemment) et A, B, C, D, E, F pour représenter les valeurs de dix à quinze. Donc, en utilisant un caractère hexadécimal, vous pouvez représenter les valeurs 16. Avec deux hexadécimales, vous pouvez représenter les valeurs 256 (16 * 16).

Dans RGB, vous avez les couleurs représentées par R ed G reen B lue (R = 0-255, G = 0-255, B = 0-255) , nous utilisons donc 3 paires de symboles hexadécimaux! Ainsi, lorsque vous voyez une couleur RVB, vous pouvez effectuer le calcul ci-dessous. 

Exemple: 

Hex: #4C8ED5 est RGB: 76, 142, 213

Parce que 4C = 76 (R ed), 8E = 142 (G reen), D5 = 213 (B lue)! 

J'espère que cela aide votre compréhension!

Plus à lire: Hexadécimal sur Wikipedia et un fichier RVB en hexadécimal de Nice Convertisseur

24
BrainArchitect

La réponse de Nimrod100

Fondamentalement, si vous aviez FF et que c'était le RED, car il y a deux hexdigits (0-9, A-F) nous faisons: F = 15

15 * (16 ^ 0) = 15
15 * (16 ^ 1) = 240

240 + 15 = 255
RED = 255

les bits (16 ^ 0) et (16 ^ 1) signifient que nous travaillons en base 16 . si vous utilisiez l'exemple de 8040FF de KPE, nous ferions ce qui suit:

F = 15

15 * (16 ^ 0) = 15
15 * (16 ^ 1) = 240

240 + 15 = 255
BLUE = 255

puis

8 * (16 ^ 0) = 8
(BECAUSE WE HAVE 0 WE IGNORE IT)
(16 ^ 1) = 16
(BECAUSE WE IGNORED THE ZERO WE * INSTEAD OF +)
8 * 16 = 128
RED = 128

4 * (16 ^ 0) = 4
(BECAUSE WE HAVE 0 WE IGNORE IT)
(16 ^ 1) = 16
(BECAUSE WE IGNORED THE ZERO WE * INSTEAD OF +)
4 * 16 = 64

GREEN = 64

R = 128
G = 64
B = 255

Considérant que si vous aviez des digits simples, par exemple. F, cela équivaut à 15 donc RED = 15

7
nimrod100

J'ai trouvé la partie mathématique de certaines des autres réponses plutôt déroutante.

C'est en fait super simple. J'ai trouvé une bonne explication ici.

Les couleurs des ordinateurs s’expriment en combinant le rouge, le vert et le bleu dans des proportions différentes. Les valeurs pour chaque couleur sont comprises entre 0 et 255. En notation RVB, nous exprimons un rouge pur en écrivant (255,0,0), où le vert et le bleu ont la valeur 0. Si nous mélangeons la même quantité de chaque couleur, nous obtenons différentes nuances de gris. . (123,123,123) est une nuance de gris, (0,0,0) représente le noir et (255,255,255) est le blanc.

Le système hexadécimal reprend exactement les mêmes principes et plages de valeurs et tente de les exprimer de manière plus courte.

Dans notre système décimal commun, les nombres à un chiffre vont de 0 à 9 et nous devons ensuite utiliser deux chiffres (c'est-à-dire 10).

Pour continuer à exprimer des nombres plus grands avec un seul chiffre, le système hexadécimal donne aux nombres 10 à 15 une représentation longue d'un caractère en leur attribuant des lettres. Alors maintenant: 10 = A, 11 = B, 12 = C, 13 = D, 14 = E, 15 = F. (Les lettres peuvent être en minuscules).

Regardons comment notre système décimal fonctionne car il est très similaire à l'hexadécimal. Dans le nombre 13, le premier chiffre est un mais représente un 10 et pour obtenir treize on ajoute 3, 13 = 10 + 3. C'est-à-dire que nous multiplions le deuxième chiffre de droite à gauche par 10, puis ajoutons le nombre suivant. Le 2 sur 23 représente un 20. En hexadécimal, nous multiplions toujours le deuxième chiffre de droite à gauche par 16. (Hexadécimal signifie seize). 

Regardons le nombre 4C. Ici on multiplie 4 fois 16 puisqu'il s'agit du deuxième nombre de droite à gauche, 4 * 16 = 64. C signifie 12, donc nous l’ajoutons maintenant à 64. 64 + 12 = 76, 4C = 64.

Pour exprimer le plus grand nombre que nous devons écrire, nous utilisons FF, qui signifie 255. Nous pouvons donc exprimer tous les nombres dont nous avons besoin pour le rouge, le vert et le bleu avec 6 caractères. 

Pour raccourcir cela encore plus, vous pouvez écrire ceux de 3 caractères où chaque caractère est doublé. Par exemple # 000 signifie # 000000 ou #ABC serait #AABBCC

Maintenant, pouvez-vous deviner quel est le nombre CC9? Ce nombre n'est pas nécessaire pour exprimer une couleur, mais il prouvera votre compréhension. Indice: En décimal, 267 signifie (2 * 100) + (6 * 10) + (7) ou (2 * 10 * 10) + (6 * 10) + (7).

Réponse ci-dessous.

-

-

-

-

(C * 16 * 16) + (C * 16) + (9) =

(12 * 16 * 16) + (12 * 16) + (9) =

3072 + 192 + 9 = 3273 

1
Alejandro Camus

Dans une notation hexadécimale à six chiffres, les chiffres appariés indiquent les composants rouge, vert et bleu du système RVB. Par exemple, #0000FF a 0 pour le rouge, 0 pour le vert et FF (qui est 15 × 16 + 15 = 255 en décimal), c’est-à-dire le maximum, pour le bleu (dans le sens qu’il a en RVB).

Dans la notation à trois chiffres, chaque chiffre est doublé et le résultat est interprété comme ci-dessus. Par exemple, #00F signifie #0000FF.

Référence faisant autorité: 4.3.6 Couleurs en CSS 2.1 (le plus récent Module de valeurs et unités CSS niveau 3 cite simplement CSS 2.1 pour cette définition; il existe des extensions du concept de couleur CSS, mais elles ne le sont pas. affecter ces questions).

Les couleurs RVB et CMJN sont des systèmes de couleurs différents. il n'y a pas de formule de conversion générale qui convertit entre eux.

1
Jukka K. Korpela

Le code HEX représente trois octets, un pour chacune des couleurs RVB dans cet ordre.

FF0000 est l'intensité RED complète, 00FF00 est l'intensité GREEN, 0000FF est l'intensité BLUE

8040FF correspond à 128 ROUGE, 64 VERT et 255 bleu

Vous pouvez également écrire un court formulaire dans lequel vous ne spécifiez pas les 4 bits de poids faible de chaque octet, tel que FFF pour tout le blanc, F00 pour le plein rouge, 00f pour le plein bleu

1
KPE

Selon http://quashnick.net/geek_stuff/HEX2DEC.html

Une valeur de couleur hexadécimale représente la couleur bleu rouge vert (chaque Utilise 1 octet) . RGB a une valeur décimale, par exemple RVB (255, 255, 255) mais le code de couleur Hex est au format hexadécimal #FFFFFF -> (R) FF- (G) FF- (B) FF

Les numéros HEX sont composés des chiffres 0 à 9 comme DEC mais ajoute également UN F. Donc, en comptant dans HEX: HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F

DEC 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Voici un numéro HEX: 1E5DF 

Pour convertir cela en un DEC, nous devons définir la base de notre pouvoir une fonction. Puisque HEX est basé sur 16 chiffres différents [0-9A-F], notre base a 16 ans.

Pour convertir de HEX à DEC, procédez comme suit: Nous savons que F = 15 in DEC nous utilisons donc cette formule (15 * 16 ^ 0) = 15
Nous savons que D = 13 in DEC nous utilisons donc cette formule (13 * 16 ^ 1) = 208
Nous savons que 5 = 5 in DEC nous utilisons donc cette formule (5 * 16 ^ 2) = 1280
Nous savons que E = 14 in DEC nous utilisons donc cette formule (14 * 16 ^ 3) = 57344
Nous savons que 1 = 1 in DEC nous utilisons donc cette formule (1 * 16 ^ 4) = 65536

Maintenant nous additionnons tous les nombres pour obtenir le numéro DEC pour HEX numéro 1E5DF:
15 + 208 + 1280 + 57344 + 65536 = 124383

Donc, notre réponse est HEX 1E5DF = DEC 124383

En savoir plus sur: http://quashnick.net/geek_stuff/HEX2DEC.html
En savoir plus sur les couleurs à l’adresse: http://www.w3schools.com/html/html_colors.asp

1
Nemesis