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 : 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
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