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

Présentation
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.

Téléchargement
Compatibilité
Linux Mac Windows
0  0 
Téléchargé 3 fois Voir les 4 commentaires
Détails
Catégories : Codes sources Python
Avatar de Frédéric JUPPONT
Expert confirmé
Voir tous les téléchargements de l'auteur
Licence : Libre
Date de mise en ligne : 27 août 2013




Avatar de josmiley 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 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 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 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.