Convertir chaine en hexa [Résolu]

Signaler
Messages postés
33
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
16 janvier 2010
-
Messages postés
33
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
16 janvier 2010
-
Bonjour
Débutant en C++ avec visual studio 6 sous windows je désire savoir s'il existe un moyen simple d'affecter à une variable le contenu en hexa d'une chaine: je dois écrire dans un fichier de type "CFile" les 2 caractères correspondant au code hexa donné par la chaine :

par exemple: 
Codes:
int Fiche =1728; 
char Chainehex[6];
itoa (Fiche,ChaineHex,16); // qui donne "06c0" que je peux diviser en "06" et "c0" avec les fonctions left et right
puis écrire la correspondance en code caractère dans mon fichier.

Malheureusement pour la transcription en ASCII "06" ne correspond pas à 0x06 et "c0" ne correspond pas à 0xc0.
Merci d'avance

Cartes1

2 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Une chaine c'est ascii (ou unicode), il n'y a rien à convertir.

DWORD __stdcall HexaToDecimal(const char* pszHexa)
{  DWORD ret 0, t 0, n = 8, c;
  while(c = *pszHexa) {
    if((c >= '0') && (c <= '9')) t = (c - '0');
    else if((c >= 'A') && (c <= 'F')) t = (c - 'A' + 10);
    else if((c >= 'a') && (c <= 'f')) t = (c - 'a' + 10);
    else break;
    ret *= 16; ret += t;
    pszHexa++;
    if(--n == 0) break;
  }
  return ret;
}

ciao...
BruNews, MVP VC++
Messages postés
33
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
16 janvier 2010

Merci BruNews pour cette réponse aussi rapide : c'est tout à fait la fonction qu'il me manquait.
A bientôt et meilleurs voeux

Cartes1