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 :

chaine de caractères avec hexadécimal


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Points : 57
    Points
    57
    Par défaut chaine de caractères avec hexadécimal
    bonjour

    je débute avec python
    existe t-il un moyen de mixer dans une chaine de caractères des caractères et des valeurs hexadécimale

    en delphi je peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine='abcd' + #$2#$3#$4 + 'fgh'

    ou #$2 #$3 et #$4 sont les caractères ayant pour valeur hexadécimale respectivement 2 3 et 4

    merci à tous

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 448
    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 448
    Points : 37 042
    Points
    37 042
    Par défaut
    Salut
    La réponse est oui mais les détails dépendent de la version de Python utilisée et du sens que vous donnez a "chaîne de caractère".
    En Python, bytes et str (unicode) ne se traitent pas pareil. Par défaut ces objets la sont immutables (il existe des objets équivalents): vous avez peut etre besoin d'autre chose.
    Sinon Python étant petit-cousin du C, exprimer un byte sous forme literale en hexa est de la forme \xNN et c'est documente ici
    Pour le reste, il faudrait être plus précis.
    A défaut, la case tuto n'est pas mal non plus.
    - W

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    merci pour la réponse

    je travaille avec python 3

    c'est pour communiquer avec un automate via le port série
    j'envoie et reçois des chaines de caractères

    j'ai essayé

    chaine1='aaa'+b'\x03' mais j'ai une erreur de conversion
    par contre
    chaine2=b'aaa\x03' ne provoque pas d'erreur
    je vais me débrouiller avec ça

    merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 448
    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 448
    Points : 37 042
    Points
    37 042
    Par défaut
    Salut,
    Sous Python3, écrire:
    c'est vouloir concaténer l'instance d'un /str/ - Unicode - initialise avec 'aaa' avec l'instance d'un objet /bytes/ initialise avec '\x03'.
    Vous pouvez concaténer bytes avec bytes ou str avec str:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chaine1='aaa'+'\x03'
    chaine1=b'aaa'+b'\x03'
    fonctionnent.

    Python2 permettait ce genre de construction aboutissant a des résultats incertains - que sera la chose récupérée dans chaine1? -.
    Avec Python3, il faudra convertir bytes en str ou str en bytes avant de pouvoir les concaténer.

    /str/ et /bytes/ sont des objets immuables. bytearray est une spécialisation d'array qui permet de travailler avec un tableau d'octets (bytes) ou de types simples (int, float,...) de façon plus adaptée que /list/ ou /sequence/.
    Note: Un tableau d'octets est une suite de valeurs contiguës en mémoire, une /list/ d'objets /str/, /bytes/ ou /int/ présente des propriétés semblables. Mais une suite d'objets Python en fait quelque chose d'une autre nature que les simples valeurs que l'on pense/souhaite manipuler. L'interface est semblable mais les "comportements" sont différents et source de nombreuses confusions, déconvenues,... qui piègent régulièrement les débutants.

    Si vous utilisez PySerial, .write accepte des /str/, des /bytes/ ou des /bytearray/ mais .read retournera des /bytes/. Ces choix (ou plutôt ambiguïtés) étant une conséquence de la compatibilité Python2/Python3 de la librairie.

    - W

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    merci beaucoup
    c'est bien plus clair

    roland

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 486
    Points : 13 696
    Points
    13 696
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Merci de cliquer sur le bouton si vous avez la solution à votre problème.

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

Discussions similaires

  1. [PL/SQL] Chaine de caractères avec une quote
    Par Titouf dans le forum Oracle
    Réponses: 2
    Dernier message: 15/05/2006, 15h36
  2. Dégradé sur une chaine de caractères avec 3 a 4 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/03/2006, 14h21
  3. Reception chaine de caractère avec recvfrom()
    Par innosang dans le forum C
    Réponses: 5
    Dernier message: 31/12/2005, 15h51
  4. Lecture d'une chaine de caractère avec fgets
    Par mayoouketchup dans le forum Langage
    Réponses: 9
    Dernier message: 22/12/2005, 17h17
  5. Réponses: 2
    Dernier message: 06/12/2002, 08h50

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