IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 5 fois
Vote des utilisateurs
0 
0 
Détails
Licence : Libre
Mise en ligne le 27 août 2013
Plate-formes : Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation

Conversion hexadécimal en RVB et RVB en hexadécimal

Bonjour,

Ayant vu une source en Perl concernant la conversion hexadécimal - RVB (RGB en anglais), je propose le même travail mais en langage Python.

Avatar de josmiley
Membre éprouvé https://www.developpez.com
Le 27/08/2013 à 1:59
Quelles contraintes ?

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
def get_rvb(hexa):
    if not 0<=hexa<=0xffffff: raise ValueError, "valeur inadaptee"
    return hexa>>16, (hexa>>8)&0xff, hexa&0xff

def get_hex(r,v,b):
    h = (r<<16) + (v<<8) + b
    try:
        if (r,v,b) == get_rvb(h): return h
    except:
        raise ValueError, "valeurs inadaptees"
Avatar de fred1599
Expert confirmé https://www.developpez.com
Le 27/08/2013 à 9:20
Quelles contraintes ?
Salut Josmiley,

Juste le paramètre hexa doit être une chaine de caractères de la forme #ffffff .

Pas le choix de virer le dièse.

Bonne journée
Avatar de josmiley
Membre éprouvé https://www.developpez.com
Le 27/08/2013 à 11:15
ok, je corrige. On peut passer soit un str #ffffff, soit un int, c'est bon ?

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
def get_rvb(hexa):
    if type(hexa) != int: hexa = int(hexa.replace('#','0x'),16)
    if not 0<=hexa<=0xffffff: raise ValueError, "valeur inadaptee"
    return hexa>>16, (hexa>>8)&0xff, hexa&0xff

def get_hex(r,v,b):
    h = (r<<16) + (v<<8) + b
    try:
        if (r,v,b) == get_rvb(h): return h
    except:
        raise ValueError, "valeurs inadaptees"
Avatar de fred1599
Expert confirmé https://www.developpez.com
Le 27/08/2013 à 11:44
Oui Josmiley on peut, c'est juste un code basic ne prenant pas en compte les erreurs d'entrées, d'ailleurs je pense que ces fonctions seront placées dans une classe par exemple.

Dans ce cas, tu formates pour rendre un paramètre adapté à cette fonction.
J'aime bien la technique du décalage de bits, c'est souvent le plus efficace en terme de performance

Bonne journée...
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.