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 :

Transformer un tableau de byte en char sans conversion ASCII


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 8
    Par défaut Transformer un tableau de byte en char sans conversion ASCII
    Bonjour, voici mon problème : j'ai un tableau de byte contenant des signes hexadécimaux comme celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte a[3] = {0x53, 0xA4, 0x55};
    J'aimerais le transformer en tableau de char sans convertir les signes hexadécimaux ASCII, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char b[6] = {'5', '3', 'A', '4', '5', '5'};
    Le second tableau serait alors deux fois plus grand que le premier.

    J'ai bien essayé une simple boucle for byte par byte avec un cast byte -> char, mais les signes hexa sont convertis.
    J'ai voulu essayer avec un sprintf et le format "X", sans succès ..

    Auriez-vous d'autres idées ? Merci d'avance !

    PS : je programme un arduino (similaire au C++)

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    Si c'est seulement un problème d'affiche, regarde du coté de std::hex.

    Sinon ça peut se faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef unsigned char byte;
     
    void byteToChar(std::vector<byte> const& bytes, std::vector<char>& chars) {
    	static char const convTable[] = "0123456789ABCDEF";
     
    	for(auto b: bytes) {
    		chars.emplace_back(convTable[b >> 4]);
    		chars.emplace_back(convTable[b & 7]);
    	}	
    }

  3. #3
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 8
    Par défaut
    Merci ! ça fonctionne super, je n'avais pas pensé à ça ! Encore merci !

    [EDIT]
    il faut faire un ET binaire avec 0x0F et non 7, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chars.emplace_back(convTable[b & 0x0F]);

  4. #4
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par courentin Voir le message
    il faut faire un ET binaire avec 0x0F et non 7, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chars.emplace_back(convTable[b & 0x0F]);
    Effectivement. My bad.

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

Discussions similaires

  1. [Socket][File] Envoyer un tableau de byte
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 30/01/2014, 09h10
  2. Transformer image en tableau de bytes
    Par ptitdragon_eric dans le forum VB.NET
    Réponses: 7
    Dernier message: 26/06/2012, 13h15
  3. transformer un tableau de char en string puis en float?
    Par maf.mouton dans le forum Débuter
    Réponses: 8
    Dernier message: 30/04/2009, 13h34
  4. Transformer un tableau de Byte en string
    Par kinouseb dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/01/2009, 17h09
  5. Transformer Image en un tableau de byte
    Par coyote999 dans le forum Graphisme
    Réponses: 3
    Dernier message: 08/07/2007, 18h32

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