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 :

Conversion d'un caractère en décimal


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Conversion d'un caractère en décimal
    Bonjour à tous,

    Je programme actuellement sur un microcontroleur, qui reçoit une donnée sur un port allant de la valeur 0 a 255.

    Mon problème : le pic convertie cette valeur en utilisant le Code ASCII (exemple : si je reçoit 65 et que je demande au micro de me dire ce qu'il a reçu, il me répond "A")

    Je souhaiterai reconvertir ce caractère en Décimal ou en héxadécimal.

    J'ai essayé d'utilisé la fonction sprintf(), mais le compilateur à du mal avec la bibliothèque.

    Du coup je souhaiterais réaliser la conversion manuellement.

    Pouvez vous m'aider à comprendre comment je dois faire ?

    Merci d'avance,
    Cordialement,
    Nartek.

  2. #2
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut
    Je sais pas s'il y a une méthode automatique mais tu dois simplement utiliser/connaitre la table ascii.
    En gros: détecté ce qui est venu et sortir l'équivalent décimal de la table ascii.

    Pour voir les équivalents (via google, j'espère qu'il est juste): http://www.cdrummond.qc.ca/cegep/inf...iles/ascii.htm

    Vu que l'ascii n'est pas trop gros, ça ne doit pas poser trop de soucis.

  3. #3
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Pourquoi ne pas faire un cast trivial sinon ?
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c = 'a';
    int code = (int)c; //65
    Un char n'est que la représentation ascii de la valeur décimale au final.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  4. #4
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Points : 234
    Points
    234
    Par défaut
    Tu peux tout simplement faire ça(attribuer le caractère à un int ->conversion implicite):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     int c='a';
    printf("valeur de c:%d",c);//97
    ou encore faire cela sans cast:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    char c='A';
     int i=c;
    printf("valeur de i:%d",i);//65
    Bon courage

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention pour les caractères non-ASCII par contre, car un tel code afficherait une valeur négative sur la plupart des PC.

    Un cast en unsigned char corrigerait le problème:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char c = 'é'; //Ne compile probablement pas en UTF-8
    int i = (unsigned char)c;
    printf("valeur de i:%d", i); //233 en Latin-1
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Conversion chaîne de caractère en nombre décimal
    Par Aquatic dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/04/2011, 11h08
  2. Réponses: 8
    Dernier message: 27/05/2010, 14h59
  3. Conversion chaine de caractères en nombre décimal
    Par lodan dans le forum Langage
    Réponses: 3
    Dernier message: 02/04/2009, 19h11
  4. Conversion caractère en décimal
    Par devoluti0n dans le forum Langage
    Réponses: 5
    Dernier message: 18/07/2007, 14h31

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