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 une chaine en hexa


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut Convertir une chaine en hexa
    Bonjour,
    Je veux convertir une chaine en hexa décimal,comment je peux faire?
    Par exemple :
    ch="0013A200"
    je veux récupérer les données 2 par 2 càd j'obtiens 00 13 A2 00 qui seront des nombres hexa.
    Merci.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut Réponse
    Bonjour,

    Il me semble que snprintf fait ça ?

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut
    Merci pour l'information, mais comment?
    j'ai pas trouvé la bonne forme de sprintf .

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Si tu fais char const* ch= "0013A200";, Ta chaîne est déjà en hexadécimal. Explique mieux ce que tu veux.

    Cherches-tu à parser la chaîne pour obtenir un tableau de int (ou de unsigned char) à partir de celle-ci?
    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.

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut
    Ma chaine n'est pas constante, je veux la récupérer d'un port série.
    Par exemlpe :
    je recoit la chaine suivante dans la variable Je déclare une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char var[2];
    sprintf(var,"%c%c",chaine_recue[1],chaine_recue[2]);
    j'obtient comme résultat var=01 .
    Je veux que 01 sera considérée comme un nombre hexa (comme 0x01).
    J’espère que j'ai bien expliqué le problème .Aidez moi svp.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Dans ce cas:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char var[3]; /*Deux digits + caractère nul de fin de chaîne.*/
    sprintf(var,"%c%c", chaine_recue[1], chaine_recue[2]);
    long nb = strtol(var, NULL, 16); /*on utilise strtol pour parser en base 16*/
    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. Convertir une chaine Type Hexa en Dec
    Par Nissartis dans le forum C
    Réponses: 7
    Dernier message: 14/04/2010, 10h07
  2. Réponses: 3
    Dernier message: 03/01/2006, 23h14
  3. [C#] Convertir une chaine accentue => sans accents
    Par alex57 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/09/2005, 09h21
  4. Convertir une chaine en format heure
    Par Lars dans le forum ASP
    Réponses: 3
    Dernier message: 24/05/2005, 11h44
  5. Convertir une chaine UTF8 en ISO-8859-1
    Par eods dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/08/2004, 16h57

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