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

Langage Perl Discussion :

chaîne à partir des codes ascii


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Points : 53
    Points
    53
    Par défaut chaîne à partir des codes ascii
    Je veux construire la chaîne constituée des caractères dont ls codes ascii sont 0,1,2 et 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $s="\x00\x01\x02\x03";
    cela fonctionne et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print unpack ("H*",$s)."\n";
    me donne bien le résultat attendu
    J'essaies maintenant de faire la même chose avec une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my $s="";
    foreach my $i (0..4){
    	$s.= sprintf("\\x%02x",$i);
    }
    mais la chaîne $s ne contient pas la valeur attendue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print unpack ("H*",$s)."\n";
    fournit pour résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    5c7830305c7830315c7830325c7830335c783034
    donne le résultat
    5c est le code de antislash, 78 celui de x ...

    Où est l'erreur ?

    Merci de ma venir en aide

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Pour transformer un nombre en caractère, il faut utiliser la fonction chr(). Ici ta première chaîne $s contient bien les caractères correspondant à 0, 1, 2, 3.
    Mais ta deuxième chaîne contient "\x00\x01..." c'est à dire le caractère antislash, puis le caractère "x", puis deux zéros, puis ...
    D'où tes résultats !

    --
    Jedaï

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    Effectivement en utilisant chr ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $s="";
    for my $i (0..4){
    	$s .= chr($i);
    }
    print unpack("H*",$s)."\n";
    et on obtient bien
    Merci

Discussions similaires

  1. Access mise a jour a partire des fichier Ascii
    Par mehdichess74 dans le forum Access
    Réponses: 1
    Dernier message: 25/06/2006, 13h08
  2. Mise à jour de la base Access a partir des fichiers Ascii
    Par mehdichess74 dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 18h00
  3. Convertir des codes ASCII en lettres
    Par grigri dans le forum Pascal
    Réponses: 4
    Dernier message: 14/04/2006, 11h54
  4. transcoder des codes ascii en caractères
    Par gillou026 dans le forum Langage
    Réponses: 6
    Dernier message: 06/03/2006, 09h25
  5. affichage caractère à partir du code ascii
    Par capone dans le forum C++
    Réponses: 4
    Dernier message: 19/10/2005, 21h51

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