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 :

Problème de conversion decimal vers Hexa


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 165
    Points : 193
    Points
    193
    Par défaut Problème de conversion decimal vers Hexa
    Bonjour,

    je cherche à convertir chaque element d'un tableau de bytes en une chaine de type hexa de cette forme:

    "0 b4 30 f2 ab ea 2d" etc...

    le problème c'est que j'obtiens ça:

    "0 ffffffb4 30 fffffff2 ffffffab ffffffea 2d "

    en gros il y a des "ffff" qui sont rajoutés , je ne comprend pas, voici mon source:

    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
     
    string Licence::getDecodeToHex(char* tab, int size,string &sRetour){
     
    	std::ostringstream oss;
     
        // Afficher en héxadécimal 
        oss << std::hex ;
     
        for (int i = 0; i < size; ++i)
        {
            // Séparer chaque octet par un espace
            if (i != 0)
                oss << ' ';
     
            // Afficher sa valeur hexadécimale
            // setw(2) permet de forcer l'affichage à 2 caractères
            oss << std::setw(2) << static_cast<int>(tab[i]);
        }
    	sRetour=oss.str();
    	return sRetour;
    ce code aussi donne le même problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    string Licence::getDecodeToHex(char* tab, int size,string &sRetour){
            string chaine;
    	ostringstream oss;
     
    	for(int i=0;i<size;i++){
    	   oss << std::hex << std::setw(2)<<static_cast<int>(tab[i])<< ' ';
     
    	}
    	sRetour=oss.str();
     
    	return sRetour;
    }
    vous avez une idée du problème ?

    merci

  2. #2
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 165
    Points : 193
    Points
    193
    Par défaut
    Je crois que j'ai résolu le prob,

    le problème semble venir du fait que la conversion en hexa semble tenir compte que les valeurs extraites du tableau sont de type "byte signé"

    en ajoutant 256 à la valeur de tab[i] si tab[i] est négatif alors ça résout le problème 8)

    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
    22
    23
    24
    25
    26
    27
     
    string Licence::getDecodeToHex(char* tab, int size,string &sRetour){
     
       std::ostringstream oss;
       int valeur;
        // Afficher en héxadécimal
        oss << std::hex ;
     
        for (int i = 0; i < size; ++i)
        {
            // Séparer chaque octet par un espace
            if (i != 0)
                oss << ' ';
     
            // Afficher sa valeur hexadécimale
            // setw(2) permet de forcer l'affichage à 2 caractères
     
                     if (tab[i]<0){
    		     valeur=tab[i]+256;
    		}
    		else
    			valeur=tab[i];
     
            oss << std::setw(2) << static_cast<int>(tab[i]);
        }
       sRetour=oss.str();
       return sRetour;

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

Discussions similaires

  1. Problème de conversion Stream vers PByte
    Par Clorish dans le forum Langage
    Réponses: 20
    Dernier message: 20/11/2007, 19h25
  2. Probléme de conversion char vers datetime
    Par locs dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/02/2007, 15h29
  3. Problème de conversion TeX vers DVI
    Par Faith's Fall dans le forum Editeurs / Outils
    Réponses: 7
    Dernier message: 20/10/2006, 10h46
  4. [MFC] Problème de conversion CString vers Char *
    Par Darkenshin dans le forum MFC
    Réponses: 10
    Dernier message: 02/12/2005, 14h42
  5. [langage] conversion décimal vers hexa
    Par chipster dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2004, 16h05

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