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 :

Convertir un string en equivalent octet [Débutant(e)]


Sujet :

C

  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut Convertir un string en equivalent octet
    Bonjour,

    Encore une question probablement basique, mais je ne sais pas comment résoudre ce petit problème (comment l'aborder)

    J'ai un string de 4 caractères qui represente la valeur hexa d'un caractère (ex 0x4b). Je souhaite convertir ce string en 1 octet de type char ,afin de récupérer le code ascci correspondant (K) pour ensuite appeler une fonction de convertion ascii-ebcdic (fonction déjà réalisé qui reçoie un pointeur vers le caractère à convertir.

    J'ai fait un petit code pour tester la fonction atoi() mais elle me renvoie toujours 0 (??), de plus je ne suis pas sur quelle soit appropriée à ce que je cherche à faire.
    Bref comment aborder ce problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdio.h>  
    #include <stdlib.h> 
    #include <errno.h>  
    #include <string.h> 
    int main(void)             
    {                          
     char hexIndex[6] = "0x4b";
     int ret = 0;              
     ret = atoi(hexIndex);     
     printf(" ret = %d",ret);  
     return(0);                
    }
    Merci

  2. #2
    Invité de passage
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Par défaut
    La fonction strtol supporte les nombres en base 16, cela doit fonctionner.

    long valeur = strtol(hexIndex, NULL, 0);

  3. #3
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Merci pour cette réponse, effectivement cette fonction strtol() me donne le code ascii correspondant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int main(void)                  
    {                               
     char hexIndex[6] = "0x4b";     
     long ret = 0;                  
     ret = strtol(hexIndex,NULL,16);
     printf(" ret = %d",ret);       
     return(0);                     
    }
    execution
    Encore merci !!!!

    Reste maintenant à convertir ce long en char "K", petite question subsidiaire, existe t'il ce type de fonction en standard ?

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Almar Voir le message
    La fonction strtol supporte les nombres en base 16, cela doit fonctionner.

    long valeur = strtol(hexIndex, NULL, 0);
    ou plutôt :
    unsigned long valeur = strtoul (hexIndex, NULL, 0);[/QUOTE]

    (une chaine hexa représente à priori un nombre non-signé)

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par SPACHFR Voir le message
    Reste maintenant à convertir ce long en char "K", petite question subsidiaire, existe t'il ce type de fonction en standard ?
    sprintf() avec "%c". Pour répondre toi-même à toutes ces questions basiques, tu devrais ouvrir ton livre de C plus souvent...

  6. #6
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    J'ai trouvé une solution pour convertir par un cast
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int main(void)                  
    {                               
     char hexIndex[6] = "0x4b";     
     long ret = 0;                  
     ret = strtol(hexIndex,NULL,16);
     printf(" ret = %d",ret);       
     char ch = (char) ret;          
     printf(" ch = %c",ch);         
     return(0);                     
    }
    J'ouvre souvent mon livre ce C , mais parfois c'est l'information que l'on ne trouve pas, car savoir qu'il faut faire un cast c'est pas évident, surtout s'il faut lire 200 pages avant de tomber sur la bonne info (les sommaires sont pas toujours très détaillés.Je fais des efforts, mais les débuts ne sont pas simples...
    J'ai probablement pas le bon bouquin de C (programmation en Langage C edition PEARSON Education), car j'ai rien sur sprintf() (du moins dans le sommaire....).

    Encore merci pour vos reponses

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

Discussions similaires

  1. Convertir un string en binaire
    Par TekP@f dans le forum ASP
    Réponses: 4
    Dernier message: 10/05/2005, 16h17
  2. [Firebird] Convertir une String en date
    Par laffreuxthomas dans le forum SQL
    Réponses: 1
    Dernier message: 04/05/2005, 19h42
  3. [Débutant(e)]convertir un string en entier
    Par harris_macken dans le forum Langage
    Réponses: 2
    Dernier message: 01/04/2005, 07h20
  4. Convertir un string en type property ou object
    Par bencot dans le forum Langage
    Réponses: 2
    Dernier message: 20/11/2004, 20h18

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