Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1847 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Comment passer un tableau de 2 char en un chiffre hexa

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Comment passer un tableau de 2 char en un chiffre hexa

n°556084
AnG-L
Posté le 01-11-2003 à 11:57:57  profilanswer
 

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

mood
Publicité
Posté le 01-11-2003 à 11:57:57  profilanswer
 

n°556186
chrisbk
-
Posté le 01-11-2003 à 14:05:04  profilanswer
 

sscanf(%x)
met un \0 a la fin de ta chaine

n°556232
AnG-L
Posté le 01-11-2003 à 14:44:25  profilanswer
 

bah disons que en fait j'ia pleins de tableaux comme ça, je vois pas trop comment utiliser le sscanf

n°556529
Carbon_14
Posté le 01-11-2003 à 22:34:08  profilanswer
 

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.

n°556536
AnG-L
Posté le 01-11-2003 à 23:10:20  profilanswer
 

okay cool :) merci bien j'ai réussi :)

n°556546
gilou
Modérateur
Modzilla
Posté le 01-11-2003 à 23:44:28  profilanswer
 

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


Message édité par gilou le 01-11-2003 à 23:51:10

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°556596
Carbon_14
Posté le 02-11-2003 à 08:23:43  profilanswer
 

Pour l'"achever" ??

n°558394
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 04-11-2003 à 10:14:43  profilanswer
 

gilou a écrit :

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


 
bijour:)...
 
cht'ite question :  
hormis le gain de lisibilité:D, y'a un intérêt particulier à pondre une fonction sous forme de macro?

n°558689
gilou
Modérateur
Modzilla
Posté le 04-11-2003 à 14:50:56  profilanswer
 

Fodger a écrit :


 
bijour:)...
 
cht'ite question :  
hormis le gain de lisibilité:D, y'a un intérêt particulier à pondre une fonction sous forme de macro?

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Comment passer un tableau de 2 char en un chiffre hexa

 

Sujets relatifs
[PHP] - passer variable en adresse... => ça recommence [:totoz]centrer un tableau en html
Question sur les tableau en java ...[C/C++] passer d'un int a 4 char (representant le nombre)
passer des parametres avec des formulaires[PHP] Convertir un chiffre en lettre
problem de tableau a 2 dim passer en argument dans une fonction[C][Newbie][Résolu] Déclaration de tableau
Plus de sujets relatifs à : [C] Comment passer un tableau de 2 char en un chiffre hexa


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR