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

 C Discussion :

problème de conversion


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut problème de conversion
    Bonjour,

    J'ai un problème avec la conversion d'une valeurs récupérés dans une string en une valeur de type "int".
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    char delimiter[] = "\n";
    char *l_data;
    char l_bufferTemp[] = "7D\n");
    int l_valeur = 0;
     
    l_data = strtok( l_bufferTemp, delimiter );
    printf( "l_data: %s\n", l_data );
     
     
    l_valeur  = atoi(l_data);
    printf( "valeur: %i\n", l_valeur );
    Le problème est que je lis bien la valeur "7F" dans mon premier "printf" mais après la conversion je ne recupère que la valeur "7" dans mon deuxième printf.

    Quel est le problème?

    Je vous remercie.

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Un problème de base: http://www.opengroup.org/onlinepubs/...ns/strtol.html.
    Cordialement.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut
    merci,
    j'ai essayer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    l_data = "7D";
    char *stop_string;
    int l_dataLabel = strtol( l_data, &stop_string, 10);
    printf("data: %i\n", l_dataLabel );
    dans mon printf, je ne recupère uniquement que la valeur 7;

    De plus j'utilisais strtok comme ma string ne contient pas uniquement la valeur "7D" mais aussi d'autre paramètre à récupérer.
    La string réel: "0,140;242;11;7D;1"
    Je récupère bien les autres valeurs mais pas celle ci.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par totoscill Voir le message
    merci,
    j'ai essayer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    l_data = "7D";
    char *stop_string;
    int l_dataLabel = strtol( l_data, &stop_string, 10);
    printf("data: %i\n", l_dataLabel );
    dans mon printf, je ne recupère uniquement que la valeur 7;

    De plus j'utilisais strtok comme ma string ne contient pas uniquement la valeur "7D" mais aussi d'autre paramètre à récupérer.
    La string réel: "0,140;242;11;7D;1"
    Je récupère bien les autres valeurs mais pas celle ci.

    le "x" dans le format de lecture (ou d'écriture) indique de l'hexa.. Sans le x, on pense que c'est un entier normal...

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    le "x" dans le format de lecture (ou d'écriture) indique de l'hexa.. Sans le x, on pense que c'est un entier normal...
    C'est vrai, mais même en faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char string[] = "0x7D"
    int l_data = atoi(string);
    printf("l_data: 0x%x\n", l_data);
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    char string[] = "0x7D"
    char *l_end_ptr;
    int l_data = strtol(string, &l_end_ptr, 10);
    printf("l_data: 0x%x\n", l_data);
    Je récupère la valeur 0.

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    A mon avis, c'est la fonction itoa qui est en cause. Je ne sais pas exectment, mais je pense que cette fonction ne gere que les decimaux, et non les hexadecimaux ...
    En premier lieu, il va falloir determiné si la fonctionitoa prend en compte les hexa, et si oui, de quelle maniere ...

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

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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