Conversion Hexa vers chaine de caractères
Bonjour à la communauté,
J'ai ci-dessous une fonction que me sert à convertir une chaine hexadécimale (stringName) en chaine de caractère (o_cData).
0x00115660AEFF ===> "00115660AEFF"
Les caractères de la chaine héxa sont appelé deux à deux avant de remplir la nouvelle chaine avec un sscanf, et c'est la que ça coince.
Peut-être qu'un sprintf serait plus approprié ?
Pourriez-vous m'aider sur ce point ?
Code:
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 28 29 30 31 32 33 34 35 36
|
int fonction() {
char *stringName = "0x00115660AEFF"; //Chaine de caractère d'entrée
unsigned int nbDataSimuFile = 15; //Nombre de caractère de la chaine en comptant le caractère de fin
int o_iNbDatas; //Nombre de caractère de la chaine de sortie
unsigned char *o_cData; //Chaine de caractère de sortie
int j = 0; //Permet de sélectionner l'emplacement dans la chaine de caractère de sortie
o_cData = malloc (sizeof(char) * nbDataSimuFile - 2)); //Permet d'allouer de la mémoire à la chaine de sortie sans les deux premiers caractères
if('0' == stringName[0] && 'x' == stringName[1]) { //Vérification que la chaine d'entrée soit bien en hexadécimale
*o_iNbDatas = (nbDataSimuFile - 3) / 2; //Calcul du nombre de caractère de sortie
o_cData = malloc (sizeof(char) * (*o_NbDatas)); //Nouvelle allocation mémoire pour la chaine de sortie
for (int i; i < nbDataSimuFile - 1; i += 2) { //Boucle for pour cibler 2 termes par termes
char temp[3];
temp[0] = stringName[i]; //Décomposition de l'information
temp[1] = stringName[i + 1];
temp[2] = '\0';
sscanf((char*) o_cData[j], "%c%c", temp); //Remplissage de la chaine de sortie
j += 2;
}
return 1;
} else {
return 0;
}
} |
Cordialement
Bastien