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 :

Problème hexa / asci / string / raw string


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut Problème hexa / asci / string / raw string
    Bonjour,

    Je récupère (en SNMP) cette valeur de type str:
    valeur = '\\x02\\x06\\x0b\\x01$\\x00'
    C'est en fait un code hexadécimal d'une date, que je cherche à transformer en:
    resultat = '07:d8:02:06:0b:01:24:00'

    J'ai trouvé sur un forum US cette commande:
    print reduce(lambda x,y: x+':'+y, map(lambda x: '%2.2x' % x, map(ord, valeur)))
    mais si je lui passe valeur tel quel, voilà ce que ça me retourne:
    '5c:78:30:37:5c:78:64:38:5c:78:30:32:5c:78:30:36:5c:78:30:62:5c:78:30:31:24:5c:78:30:30'

    Je modifie donc à la main (pas dans un script) valeur, pour que ça donne ça:
    valeur2 = '\x07\xd8\x02\x06\x0b\x01$\x00'
    Et quand je fait un :
    print reduce(lambda x,y: x+':'+y, map(lambda x: '%2.2x' % x, map(ord, valeur2)))
    hop ça marche :
    07:d8:02:06:0b:01:24:00

    Le problème est que je n'arrive pas à convertir ça
    '\\x02\\x06\\x0b\\x01$\\x00'
    en ça
    '\x07\xd8\x02\x06\x0b\x01$\x00'
    dans un script.

    ça parait simple mais en fait non! J'ai essayé de faire replace("\\", "\"), d'utiliser le caractère "r" pour raw string, etc... mais je n'y arrive pas j'ai toujours des erreurs.

    Quelqu'un a une idée de comment faire ce petit changement de format?

    Merci!!

    Dazdh

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut
    1.
    >>> s='\\x02\\x06\\x0b\\x01$\\x00'
    2.
    >>> eval("'%s'" % s)
    3.
    '\x02\x06\x0b\x01$\x00'
    4.
    >>> new=eval("'%s'" % s)
    5.
    >>> new
    6.
    '\x02\x06\x0b\x01$\x00'

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  2. [Python 3.X] Convertir une raw-string en string
    Par tyrtamos dans le forum Général Python
    Réponses: 5
    Dernier message: 11/04/2015, 14h00
  3. problème de conversion int[x] --> string
    Par poussinphp dans le forum SL & STL
    Réponses: 2
    Dernier message: 17/08/2005, 14h45
  4. Problème de copie de string dans string
    Par kazarn dans le forum SL & STL
    Réponses: 17
    Dernier message: 15/03/2005, 18h35
  5. Les raw strings
    Par c_kiki dans le forum Général Python
    Réponses: 1
    Dernier message: 11/11/2004, 13h26

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