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 char* en byte[]


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Convertir un char* en byte[]
    Bonjour

    N'ayant plus fait de C depuis un petit moment, je me retrouve avec un problème que je n'arrive pas à résoudre.
    J'ai actuellement une chaîne de caractère sous forme d'un tableau de char et j'aimerai le traduire en tableau de byte 2 caractères par 2 caractères (pour avoir la représentation hex des valeurs).

    Un petit exemple étant mieux qu'un long discours :
    J'ai une chaîne de caractère chaine1 qui vaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char chaine1[]="07e104060f3a15002b0000";
    que j'aimerais traduire en tableau de byte (qui est un char) pour chaque couple de caractère afin d'obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char chaine2[] = {0x07,0xe1,0x04,0x06,0x0f,0x3a,0x15,0x00,0x2b,0x00,0x00};
    Là, je sèche !

    Si quelqu'un a une idée, je n'ai rien trouvé de concluant en googlant ma recherche

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        char chaine1[] = "07e104060f3a15002b0000";
        char chaine2[11];
        for ( int i = 0 ; i < 11 ; ++i )
            sscanf( chaine1+2*i , "%2hhX" , chaine2+i );

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour et merci.

    En attendant une réponse, mes recherches m'ont effectivement amené vers le sscanf.

    C'est parfait.

    Encore merci.

  4. #4
    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, certains compilateurs obsolètes ne supportent pas le modificateur hh pour scanf() (qui vient du standard C99), notamment toutes les versions de Visual Studio y compris 2017.
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Salut

    Je prends note de cette contrainte.
    Je tourne avec un gcc standard sous RHEL 4.8 qui semble accepter ce modificateur.

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

Discussions similaires

  1. C++: Convertir cli::array<System::Byte>^ en char
    Par ATechDrummond dans le forum C++
    Réponses: 4
    Dernier message: 06/04/2017, 10h19
  2. Convertir un tableau de char en byte
    Par altahir007 dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/09/2011, 14h55
  3. Convertir des wchar_t en byte (unsigned char)
    Par teddyalbina dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2011, 11h26
  4. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/01/2005, 10h12

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