Bonjour,
je n'arrive pas a coder une fonction en c me permettant de passer de trois int represantants successivement le rouge le vert et le bleu (RGB) a un int representant la couleur en haxadecimal...
Quelq'un peut-il m'aider ?
Merci a vous.
Bonjour,
je n'arrive pas a coder une fonction en c me permettant de passer de trois int represantants successivement le rouge le vert et le bleu (RGB) a un int representant la couleur en haxadecimal...
Quelq'un peut-il m'aider ?
Merci a vous.
La représentation hexadécimale sert justement à mettre en évidence les trois composantes qui, en général, tiennent chacune sur un octet. Par exemple :
« #fedc89 », soit :
Bleu : fe = 254 / 255 ;
Vert : dc = 220 / 255 ;
Rouge : 89 = 137 / 255.
Pour mettre chaque composante à sa place dans un seul entier, le plus simple est d'utiliser l'opérateur de décalage « << » et le OU logique bit à bit « | ».
Comme il se peut qu'il s'agisse d'un devoir scolaire, je reste volontairement évasif. Essaie de poster un morceau de code en tenant compte de ces conseils.
Merci pour cette reponse rapide.
J'ai reussi grace a tes precieuses indications.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Le code : int get_color(int r, int g, int b) { int result; result = 0; result += r << 16; result += g << 8; result += b; return (result); }
Enfin, évite le "#" dans ta réprésentation, ça rappelle trop le format utilisé en HTML (qui lui, liste le rouge en poids fort)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager