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

Python Discussion :

python : probleme avec .encode("hex")


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut python : probleme avec .encode("hex")
    bonjour à tous,

    voila j'ai deux variables et j'aimerais les concaténer pour avoir une seul variable.
    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    line0 = 0b10010001 # code en binaire
    line1 = 0b00001111 # code en binaire
     
    line = line0.encode("hex") + line1.encode("hex")  #concaténation
    le probleme c'est que ca me retourne :

    line = line0.encode("hex") + line1.encode("hex")
    AttributeError: 'int' object has no attribute 'encode'

    avez vous une idée du probleme?

    merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    encode/decode sont plutôt des méthodes associées aux chaînes de caractères.
    Lorsque vous écrivez:
    "0b10010001" est la représentation littérale d'un nombre en base 2.
    De fait, "n" sera associé à un nombre et non à une chaîne de caractères:
    Et si vous voulez en récupérer la représentation hexadécimale ou binaire, vous avez les fonctions builtins "bin" et "hex":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> hex(n)
    '0x91'
    >>> bin(n)
    '0b10010001'
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut
    ok, merci pour ta réponse!

    mais j'ai encore un petit soucis car pour moi line.encode("hex") récupère une chaine de caractère dans line et la convertie en hexadecimal non?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par cosmoff Voir le message
    mais j'ai encore un petit soucis car pour moi line.encode("hex") récupère une chaine de caractère dans line et la convertie en hexadecimal non?
    Si line est définie par:
    alors pour Python ce sera un nombre.

    Si pour vous c'est une chaîne de caractère, Python a toujours le dernier mot.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut
    d'accord pour ca mais si je met line="abc" ca ne marche pas non plus

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par cosmoff Voir le message
    d'accord pour ca mais si je met line="abc" ca ne marche pas non plus
    Le codec "hex" n'a pas été porté sous Python3.
    Vous pouvez utiliser une des fonctions du module binascii.
    Encore faut-il que ce soit vraiment ce que vous voulez faire.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    0b10010001 est un entier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(type(0b10010001))
    <class 'int'>
    Si on veut avoir 0b10010001 sous forme de chaine de caractères, par exemple pour l'affichage, on peut faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    line0 = str(bin(0b10010001))
    print(line0)
    '0b10010001'
    print(type(line0))
    <class 'str'>
    Par contre, hex donne une chaine (ici '0x91'):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(hex(0b10010001))
    <class 'str'>
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut
    ok merci beaucoup pour vos reponses !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [text] probleme avec simple quote
    Par bor1s dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/12/2005, 16h03
  2. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16
  3. Réponses: 2
    Dernier message: 30/08/2004, 14h48

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