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 :

entier vers hexa dans une string


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut entier vers hexa dans une string
    Bonjour,

    Je voudrais afficher une chaîne de caractères ascii.
    Il est facile le faire en dur: print "\x61\x62\x63\x64" => ABCD

    Maintenant voila ce que je voudrais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def foo ( strnum ):
        num = int ( strnum )
        str = [ ] 
        for i in range (num):
            str.append ( untrucàfaire (num) )
        print num
    Le résultat dans le shell: plein de caractères (la plupart non affichables)

    Merci pour votre aide!

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

    Pourquoi ne pas faire simplement?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> s = "\x61\x62\x63\x64"
    >>> print (s)
    abcd
    >>> s[0]
    'a'
    \x<nn> c'est le même "entier" que 'a', la différence est dans la représentation - comment l'afficher...

    Si le sujet est de convertir des nombres écrits en hexa en int puis de les ressortir en hexadécimal, vous avez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> hex(int("\x61\x62\x63\x64", 16))
    '0xabcd'
    Mais je dois avouer que ce que vous voulez faire n'est pas très clair - pour moi! -.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Ce n'est pas ce que je veux.
    Par ailleurs j'ai avancé, la fonction suivante ressemble plus à ce que je veux.
    Cela dit, des caractères manquent chez moi, notamment a partir de la lettre d


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import sys
     
    def foo(strnum):
        i = 0
        length = len (strnum)
        str = []
        while i < length:
            str.append (chr(int(strnum[i:i+2])))
            i = i+2
        return "".join(str)
     
    if __name__ == "__main__":
        print foo (sys.argv[1]),
    Je le lance avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (( i<256 )); do python /tmp/toto.py $i; (( i+=1 )); done
    Je ne vois pas vraiment pourquoi

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Donnez un exemple de ce que vous avez en entrée et de ce que vous voulez en sortie: cela aiderait à comprendre ce que vous voulez faire.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Je ne comprends pas non plus le but de la manœuvre, mais votre code bash actuel revient à appeler successivement foo() avec comme paramètre "0", "1", "2", "3", …, "254", "255" (en assumant que $i est initialisé à zéro…).

    Dans ce cas, pourquoi diable se compliquer la vie dans foo*? Normal qu’elle s’arrête au 'd', ord('d') = 100, or vous ne prenez jamais plus de deux chiffres (strnum[i:i+2])*! Un peu de logique et de simplicité, que diable*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import sys
     
    def foo(strnum):
        return chr(int(strnum))
     
    if __name__ == "__main__":
        print foo (sys.argv[1]),
    Sinon, expliquez plus clairement votre but, et donnez un exemple de données d’entrée à foo(), et de résultat attendu, comme demandé par wiztricks.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Le résultat dans le shell: plein de caractères (la plupart non affichables)
    C'est étonnant votre fonction retourne un nombre.

    Dans votre fonction de référence, str (au passage c'est pas conseillé de l'appeler comme cela) n'est pas utilisé.

    Cette fonction est-elle de vous? Si non, pouvez-vous donner le lien où vous l'avez trouvé?

    Si oui, comme le disent les autres membres du forum, il serait souhaitable de nous donner un exemple d'entrée sortie.

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

Discussions similaires

  1. Les espaces dans une String vers une <TextArea>
    Par loopx dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 21/03/2008, 14h37
  2. [C#]Comment executer du code qui se trouve dans une string ?
    Par freddyboy dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/02/2005, 16h31
  3. mettre un entier dans une string
    Par kinder29 dans le forum SL & STL
    Réponses: 14
    Dernier message: 14/02/2005, 11h54
  4. [DOM] sauver dans une String
    Par hocinema dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 28/09/2004, 21h44
  5. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26

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