Comment passer un tableau de 2 char en un chiffre hexa [C] - C - Programmation
Marsh Posté le 01-11-2003 à 14:44:25
bah disons que en fait j'ia pleins de tableaux comme ça, je vois pas trop comment utiliser le sscanf
Marsh Posté le 01-11-2003 à 22:34:08
0x9f est la REPRESENTATION en hexa de 159 décimal.
toto[0] représente le '9' de cette représentation, toto[1] le 'f'
si toto[2] = '\0';
sscanf(chaine, "%x", ..); // voir l'aide sur sscanf()
permet de mettre dans .. la valeur décimale représentée par chaine donc, ici, 159.
Marsh Posté le 01-11-2003 à 23:44:28
Bon, si il a pas \0 en 3e position, en C crade, on pourrait faire ainsi:
Tu peux te definir une macro
#define NUMVAL(c) (((c)>='0')&&((c)<='9')):((c)-'0'):\
(((c)>='A')&&((c)<='F')):((c)-'A'+ 0x0A):\
(((c)>='a')&&((c)<='f')):((c)-'a'+ 0x0A):0xFF)
Et la valeur que tu veux est:
(NUMVAL(Toto[0]) * 0x0F) + NUMVAL(Toto[1])
et si tu n'es pas sur de la valeur de tes données, tu peux tester ((NUMVAL(Toto[0]) == 0xFF) || (NUMVAL(Toto[1]) == 0xFF)) pour voir si une de tes données etait fausse.
A+,
PS si j'ai posté ca, c'est surtout pour faire plaisir a Taz
Marsh Posté le 04-11-2003 à 10:14:43
gilou a écrit : Bon, si il a pas \0 en 3e position, en C crade, on pourrait faire ainsi: |
bijour...
cht'ite question :
hormis le gain de lisibilité:D, y'a un intérêt particulier à pondre une fonction sous forme de macro?
Marsh Posté le 04-11-2003 à 14:50:56
Fodger a écrit : |
Ben comme c'est pas une fonction, tu as un gain infime puisque tu n'empiles pas de contexte...
Quand ca concerne que des operations arithmetiques tres simples, c'est une pratique courante en C, les macros.
Perso, j'evite tant que faire se peut, pour une raison simple: c'est la merde a debugger, un code plein de macros, puisque le debugger ne voit que la forme expansée de la macro.
A+,
Marsh Posté le 01-11-2003 à 11:57:57
Bonjour,
Je possède un tableau de deux caractères genre :
toto[0]='9';
toto[1]='f';
et je voudrais que ça fasse :
toto[0]=0x9f;
voila