IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Téléchargez Python Discussion :

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


Sujet :

Téléchargez Python

  1. #1
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    Par défaut Conversion hexadécimal en RVB et RVB en hexadécimal
    Bonjour,

    Je vous propose un nouvel élément à utiliser : 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.





    Qu'en pensez-vous ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    Quelles contraintes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    Par défaut
    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
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    ok, je corrige. On peut passer soit un str #ffffff, soit un int, c'est bon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    Par défaut
    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...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Convertir un code couleur hexadécimal en RVB ou RGB en Perl
    Par djibril dans le forum Téléchargez
    Réponses: 2
    Dernier message: 23/04/2014, 12h37
  2. Convertir un code couleur RGB ou RVB en hexadécimal en Perl
    Par djibril dans le forum Téléchargez
    Réponses: 0
    Dernier message: 20/05/2013, 16h48
  3. Conversion hexadécimal -> décimal
    Par botanica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2005, 10h13
  4. Conversion Texte en Hexadécimal (char*)
    Par kilowat dans le forum C++
    Réponses: 6
    Dernier message: 11/06/2005, 14h40
  5. Fonction de conversion de COLORREF en hexadécimal?
    Par charliejo dans le forum MFC
    Réponses: 4
    Dernier message: 21/02/2004, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo