(re) bonjour,

Hé oui, c'est la journée du traitement de chaines, hi.

Ce coup-ci, j'ai de l'hexa sur 12 caractères que je veux convertir en numérique: 009064F00000.
J'ai essayé: strtoul(strTmp,NULL,16); mais ça renvoie un long, ce qui n'est pas asser long pour stocker le résultat.

J'ai transformé une fonction que j'ai trouvée:
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
//Conversion de base n en dec 
double BaseNToDec(char *TablDep, int inBase) { 
   double inTotal=0;
   int i=2,Valeur,inValTabl;
   float flPuissance;
 
   while(TablDep[i]!=0) {
      flPuissance = pow(inBase,(strlen(TablDep)-i-1));
      inValTabl = TablDep[i];
      Valeur = (inValTabl-48)*flPuissance;
      inTotal += Valeur;
      i++;
   }
   return inTotal;
}
Mais si je fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
code = BaseNToDec(strTmp,16);
printf("(%ld)(%lf)",code,code);
Ca me renvoie: (0)(2.000001)

Quelqu'un peut-il m'aider ?

Merci d'avance.