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 :

Interprétation bytes bytearray pour certaines valeurs


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut Interprétation bytes bytearray pour certaines valeurs
    Bonjour à tous

    je débute en Python, et j'ai un problème que je ne sais résoudre.

    Comment faire pour que le compilateur n'interprète pas les valeur hexadécimales que je charge dans un bytearray

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     b = bytearray()
     b.append(0x01)
     b.append(0x02)
     b.append(0x03)
     print(b)
    bytearray(b'\x01\x02\x03')
    b'\x01\x02\x03'
    jusque là tout va bien

    Maintenant, même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     b = bytearray()
     b.append(0x01)
     b.append(0x02)
     b.append(0x32)
     print(b)
    bytearray(b'\x01\x022')
    b'\x01\x022'


    le compilateur a recalculé mon 0x02 avec 0x32 et je perds mes valeurs.

    Merci pour votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    Citation Envoyé par zygoat Voir le message
    le compilateur a recalculé mon 0x02 avec 0x32 et je perds mes valeurs.
    Il ne recalcule rien, il affiche le caractère ASCII correspondant lorsqu'il est affichable (0x32 = "2") et une représentation en hexa sinon.

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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut
    est-ce qu'il existe un moyen d'avoir dans mon tableau la valeur x32?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Citation Envoyé par zygoat Voir le message
    est-ce qu'il existe un moyen d'avoir dans mon tableau la valeur x32?
    On peut faire une boucle qui récupère les entiers du bytearray pour les afficher comme on veut (si ce que ça fait par défaut ne vous convient pas) ou chercher une fonction dans les bibliothèques standards qui évite d'avoir à écrire ça.

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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut
    je voudrai bien me passer du 0x32, mais il correspond à une commande que je dois transférer.
    Vous avez une méthode pour que la valeur hexa soit conservée? Je débute et malgré tous mes essais, je n'arrive pas à avoir la valeur dans le tableau.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Citation Envoyé par zygoat Voir le message
    je voudrai bien me passer du 0x32, mais il correspond à une commande que je dois transférer.
    Un bytearray est un tableau d'entiers/bytes. Qu'on le représente par 50 en décimal, 32 en hexadécimal ou 2 en ASCII, ce sera le même byte.

    Citation Envoyé par zygoat Voir le message
    Vous avez une méthode pour que la valeur hexa soit conservée? Je débute et malgré tous mes essais, je n'arrive pas à avoir la valeur dans le tableau.
    La valeur est conservée... c'est juste son affichage qui n'est pas "homogène".
    Après si vous voulez écrire une boucle pour appliquer la fonction "hex"... juste pour faire joli. Libre à vous.

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

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut
    ok, merci
    je viens de comprendre que b'\x01\x022' correspond bien à 3 valeurs, alors que l'on en voit 2.

    Merci

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par zygoat Voir le message
    je viens de comprendre que b'\x01\x022' correspond bien à 3 valeurs, alors que l'on en voit 2.
    Exactement !!! Sauf qu'en réalité on en voit quand-même 3... b'\x01\x022'
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/05/2013, 11h00
  2. Supression dans une table sauf pour certaine valeurs
    Par Nikimizi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/03/2013, 15h15
  3. define noprint pour certaines valeurs dans proc report
    Par servane dans le forum ODS et reporting
    Réponses: 9
    Dernier message: 25/05/2011, 19h24
  4. [VxiR2] rupture conditionelle (afficher que pour certaine valeur)
    Par pierregaya dans le forum Webi
    Réponses: 8
    Dernier message: 16/10/2009, 10h06
  5. Réponses: 0
    Dernier message: 18/08/2009, 12h00

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