Convertisseur RGB / Hexa

Nabreus -  
 DrkJadore77 -
Bonjour,

Je me présente aujourd'hui à vous en temps qu'élève en CPGE, qui a malheursement un DM à rendre dans 2 semaine sur python.

Le but de l'exercice est de "programmer" un convertisseur RGB / Hexa. Nous en sommes toutefois seulement à la découverte de python.

Dans un premier temps, nous avons compléter un programme pour convertire un nombre en base 10 en base 16 :


def hex(n):
# Convertir un nombre en hexadécimal
q=-1
res=""
while q!=0:
q=n//16
r=n%16
if r<10: r=str(r):
if r==10: r=:a
if r==11: r=:b
if r==12: r=:c
if r==13: r=:d
if r==14: r=:e
if r==15: r=:f
res=r+res
n=q
return res

En théorie celui-ci fonctionne. Ensuite, sachant qu'un code RGB est un tuple de 3 nombres entre 0 et 255, et donc que chaque valeur est codée sur 8 bits, et donc sur 2 charactères hexadécimaux, on en déduit qu'il faut 6 charcartère hexadécimaux pour codé une couleur.

Maintenant qu'on a défini la fonction hex, on me demande de compléter ces lignes :

def rgb_to_hex(rvb):
res="" # On initialise la chaine de caractère résultat à 0
for i in range (3): # On boucle sur les trois couleurs indicées 0,1,2
res = res+str( ....... ))
return res

Pour ma part j'ai essayé sa :

def rgb_to_hex(rvb):
res="" # On initialise la chaine de caractère résultat à 0
for i in range (3): # On boucle sur les trois couleurs indicées 0,1,2
res = res+str(hex(i))
return res

Mais en testant avec 3 valeur (120,200,35) qui devrait donner 78c823 le programme ne me montre aucune erreur, mais ne veut me sortir aucune valeur ... (j'utilise spyder)

Donc j'ai plusieurs question à vous poser :

1. J'ai vu que les charactères d'une chaine de charactères sont indicées de 0 à n. Mais ici on a def rgb_to_hex(rvb) avec rvb qui ne me semple pas être une chaine de charactère. Peut-on également indicées les chiffres d'un nombre entier, ou d'un nombre flottant ?

2. La fonction hex() est définit de base dans python il me semble, et chez moi elle me ressort toujours un nombre avec 0x devant. Pourriez vous me dire d'où celà vient, et comment éviter que dans la chaine de charactère résultat res que je crée il y es 3 fois 0x ?

3. Pourquoi ce programme ne marche pas et comment le faire marcher ?

Merci déjà à ceux qui sont arrivé jusqu'au bout de ce post, et encore plus à ceux qui voudront bien passer un peu de temps à m'expliquer ^^ A bientôt !
A voir également:

2 réponses

Utilisateur anonyme
 
Bonjour,

Une de mes sources -> https://python.developpez.com/telecharger/detail/id/3544/Conversion-hexadecimal-en-RVB-et-RVB-en-hexadecimal

Quelles sont les contraintes de l'exercice, que je puisse te guider ?

Déjà rien que la fonction hex me fait mal aux yeux...
2
DrkJadore77
 
Bonjour,
rvb est un tuple, comme (255,255,255).

Tu cherches à convertir chaque valeur en hexadécimal, pour ce faire, il faut donc prendre le rouge, ensuite le vert, et enfin le bleu, d'où la boucle. Ainsi tu devrais essayer avec, à la place de "hex(i)", "hex(rvb[i])" (Vérifie que ta fonction hex() soit dans le même programme)

J'espère que c'est compréhensible, et bon courage ;)
0