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 :

Conversion nombre<->caractere


Sujet :

Langage Perl

  1. #1
    Membre du Club Avatar de Mr Hyde
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 80
    Points : 62
    Points
    62
    Par défaut Conversion nombre<->caractere
    Bonjour, je cherche une fonction qui transformerais un entier en une chaine de caratère:

    Exemple:
    fonction(123) me renveirais "123"
    fonction(5) me renveirais "5"

    J'ai trouvé une fonction qui retournait le code ASCII correspondant a un chiffre, mais ce n'est pas ca que je cherche.

    Merci d'avance!

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Un truc comme ça (explication à la fin) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl
     
    use warnings;
    use strict;
     
    sub fonction {
      return shift;
    }
     
    my $i = fonction (123);
     
    print substr($i, 0, 1)."\n";
    print substr($i, 1, 1)."\n";
    print substr($i, 2, 1)."\n";
    Bon, en fait, je suis taquin

    Ma fonction ne fait rien ...

    C'est qu'en Perl, un nombre est avant tout une chaine de caractères, convertie en valeur numérique lorsque l'on en a besoin comme tel ...

    Donc, que je fasse $i=fonction(123); ou $i=123; j'ai toujours affaire à 3 caractères (ainsi qu'on le voit avec les print de substrings), et pas réellement à un nombre.

    Par contre, si je fais $i = $i + 5, la chaine "123" sera convertie en valeur numérique le temps du calcul, pour donner 128, qui sera re-transformé en chaine "128".

    Bon Perl 8)

  3. #3
    Membre du Club Avatar de Mr Hyde
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    Merci beaucoup!

    A vrai dire, je ne connais absolument pas le Perl! Je développe un logiciel, codé en Python, qui doit intéragir avec un site en Perl....voilà! Forcément, ce genre de questions doit paraitre un peu stupides quand on est habitué au Perl!

  4. #4
    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
    Citation Envoyé par 2Eurocents
    C'est qu'en Perl, un nombre est avant tout une chaine de caractères, convertie en valeur numérique lorsque l'on en a besoin comme tel ...
    C'est plutôt le contraire : une variable numérique est "stringifiée" si elle se retrouve en contexte de string (par exemple une concaténation, certaines fonctions, etc...), et heureusement, sinon il y aurait un gros gaspillage d'espace ! Je ne rentre pas dans le détail, mais tout scalaire ( $ ) est en fait une structure de donnée complexe possédant plusieurs "cellules" : une numérique, une pour les strings, une pour les références, etc... Habituellement une seule de ces cellules est utilisée, mais il est possible de bidouiller ce mécanisme et certains modules permettent d'exploiter cette "dualité" de nature des scalaires.

    La notion de contexte est extrèmement importante en Perl, et on la retrouve encore ici. En fait l'important c'est qu'un scalaire se comporte normalement comme une chaîne de caractère quand on a besoin d'une chaîne et comme un nombre lorsqu'on a besoin d'une valeur numérique ! (les cas ambigus sont extrèmement rares et résultent presque toujours d'une erreur de design).

    --
    Jedaï

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

Discussions similaires

  1. programme python : conversion nombre en chaine de caracteres
    Par koala_64 dans le forum Général Python
    Réponses: 6
    Dernier message: 02/11/2007, 21h10
  2. conversion nombre binaire -> decimal
    Par spoun95 dans le forum Langage
    Réponses: 7
    Dernier message: 25/11/2005, 17h46
  3. [MySQL] affiche ke un certain nombre des premier caractere d'une var
    Par Damarus dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/09/2005, 17h47
  4. conversion datetime-chaine de caracteres
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/08/2005, 13h26
  5. Conversion Nombre -> Texte
    Par Isis dans le forum Assembleur
    Réponses: 7
    Dernier message: 04/06/2003, 21h47

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