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 :

Unsigned char* to hex


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 190
    Par défaut Unsigned char* to hex
    Bonjour tout le monde,

    Comment faire pour passer les valeurs d'un unsigned char* en hexadécimal ?
    Nom : Sans titre.png
Affichages : 1289
Taille : 2,0 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned char* test = '6192';
    // le passer
    unsigned char* test = '1830';
    Je sèche sur ce coup là ! Merci pour votre aide!

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    En principe, l'algorithme de base si on ignore le problème des nombres trop grands serait:

    - "6192" -> 6192 (donc dans un entier)
    - 6192 -> "1830"

    Si on ne veut pas faire cela et qu'on veut être un peu flemmard:

    Je n'ai pas de compilateur C sous la main, mais cela devrait être proche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    char* convert(const char *str) {
        // Decimal vers hexa sera au max de même taille.
        // +1 pour le ''\0'
        int n = strlen(str) + 1;
        char *res = malloc(n);
        if (!res) {
            return res;
        }
     
        int number = strtol(str, NULL, 0);
        snprintf(res, n, "%x", number);
        return res;
    }
     
    int main() {
        char *res = convert("6192");
        printf("%s\n", res);
        free(res), res = NULL;
    	return 0;
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 190
    Par défaut
    Merci pour votre réponse seulement le type n'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char* convert(const char *str) {
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unsigned char* convert(const unsigned char *str) {
    du coup ce n'est plus compatible :s

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 751
    Par défaut
    Que ce soit en ANSI ou en UTF-8, les chiffres tiennent dans 7 bits donc tu peux caster joyeusement en (unsigned char*) ou (char*)

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 190
    Par défaut
    ça coince à cette ligne:

    Nom : Sans titre.png
Affichages : 1357
Taille : 5,8 Ko

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    C'est parce que tu utilises un compilateur C++ à la place d'un compilateur C ;-)

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Par défaut
    il te faut faire un cast de malloc avec (char *)

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
     char *res =(char*)malloc(n);

Discussions similaires

  1. unsigned char* to char*
    Par xela2000 dans le forum MFC
    Réponses: 4
    Dernier message: 20/11/2005, 16h07
  2. Réponses: 6
    Dernier message: 06/10/2005, 11h30
  3. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 14h10
  4. Réponses: 19
    Dernier message: 28/04/2005, 15h36
  5. char et unsigned char
    Par jobherzt dans le forum C++
    Réponses: 8
    Dernier message: 11/02/2005, 00h24

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