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 :

S�quence d'octets en hexadecimal


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Avril 2019
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par d�faut S�quence d'octets en hexadecimal
    Bonjour, je souhaite envoyer une s�quence d'octet en hexad�cimal via un programme python vers un �cran (communication UART).

    Ma s�quence se pr�sente donc sous la forme b'\xXX\xXX...' ou XX sont des valeurs en hexad�cimal

    Ce programme me sert � afficher un num�ro sur l'�cran puis en appuyant sur un bouton afficher le num�ro suivant.

    Mon probl�me est que par exemple sur la s�quence b'\xAA\xAA\x00\x4E\xAA'. ou AA sont des octets d�finissant certains param�tres fixes, je ne trouve pas de moyen de modifier la valeur 00 et 4E. J'ai essayer en essayant de faire un compteur puis en utilisant la fonction hex() puis via une cha�ne de caract�re de remplace le 0 en \ mais l'antislash sur python est un probl�me. De plus, l'instruction format ne marche pas � cause du format qui ne marche pas avec des octets et quand je convertit avec str() la cha�ne de caract�res est diff�rentes de la s�quence souhait�e.

    Merci de vos r�ponses.

  2. #2
    Membre chevronn�
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 26
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par d�faut
    je ne suis pas sur d'avoir compris o� �tait le probl�me, est-ce que ceci pourrait vous d�coincer ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    string = b'\xAA\xAA\x00\x4E\xAA'.hex()
    bytes_list = [string[i:i+2] for i in range(0, len(string), 2)]
    print(bytes_list) # ['aa', 'aa', '00', '4e', 'aa']

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

    Avec Python, les bytes sont non mutables comme les str(ings).
    Vous pouvez les modifiez comme les str(ings) en passant par une liste, puis en contruisant la nouvelle chaine via .join ou les transformer en bytearray (qui sont des bytes mutables).

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

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Avril 2019
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par d�faut
    Citation Envoy� par flapili Voir le message
    je ne suis pas sur d'avoir compris o� �tait le probl�me, est-ce que ceci pourrait vous d�coincer ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    string = b'\xAA\xAA\x00\x4E\xAA'.hex()
    bytes_list = [string[i:i+2] for i in range(0, len(string), 2)]
    print(bytes_list) # ['aa', 'aa', '00', '4e', 'aa']
    Et apr�s comment faire pour reformer des octets sous la forme b'\xAA\xAA\x00\x4E\xAA'?

  5. #5
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par d�faut
    Citation Envoy� par valdss Voir le message
    Et apr�s comment faire pour reformer des octets sous la forme b'\xAA\xAA\x00\x4E\xAA'?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> s = b'1234'
    >>> L = list(s)
    >>> L
    [49, 50, 51, 52]
    >>> L[2] = ord('X')
    >>> bytes(L)
    b'12X4'
    >>>
    ou bien:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    >> z = bytearray(s)
    >>> z
    bytearray(b'1234')
    >>> z[1] = ord('X')
    >>> z
    bytearray(b'1X34')
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Extraire une s�quence d'octets d'un fichier
    Par benito9253 dans le forum Windows Forms
    R�ponses: 0
    Dernier message: 23/12/2009, 22h26
  2. conversion mot de 4 octets hexadecimal en decimal
    Par adelsunwind dans le forum VBA Access
    R�ponses: 7
    Dernier message: 03/03/2009, 22h47
  3. Convertir une AnsiString en hexadecimal
    Par manathan01 dans le forum C++Builder
    R�ponses: 3
    Dernier message: 26/12/2002, 09h27
  4. Existe-t'il un type tenant sur 2 octets ?
    Par benj63 dans le forum C++Builder
    R�ponses: 13
    Dernier message: 20/06/2002, 17h03

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