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

  FORUM HardWare.fr
  Programmation
  C

  Conversion char en hexa

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversion char en hexa

n°2214728
hppp
Serveur@home
Posté le 01-01-2014 à 20:03:50  profilanswer
 

Salut à tous,
 
Je suis en train de coder un petit truc mais j'ai un petit problème avec la conversion d'un char en hexa.
 
J'ai une variable de type :
 

Code :
  1. char val="03AF8DE9";


 
et je voudrait la convertir en :
 

Code :
  1. unsigned char val[9]={ 0x00,  0x03,  0x0A,  0x0F,  0x08,  0x0D,  0x0E,  0x09};


 
Je voulais faire une fonction du genre :
 
 

Code :
  1. void CharHex(char val, unsigned char *hexa[20]){
  2. int i;
  3. int taille=sizeof(server);
  4. for(i=0; i<taille; i++){
  5.  switch ( val[i] ) {
  6.  case "0":
  7.    hexa[i]=0x00;
  8.    break;
  9.  case "1":
  10.    hexa[i]=0x01;
  11.    break;
  12.  //ETC pour les autres nombres hexa
  13.  default:
  14.    hexa[i]=0x00;
  15.    break;
  16.    }
  17. }
  18. }


 
Mais existe t'il deja une fonction de ce type?
 
Merci et bonne année à tous.

mood
Publicité
Posté le 01-01-2014 à 20:03:50  profilanswer
 

n°2214731
Farian
Posté le 01-01-2014 à 20:37:25  profilanswer
 

Bonsoir !
 
Il vous faudra passer un paramètre de type "chaine" de caractère, pas un caractère ... Et mettre ces caractères et pas des chaines dans vos "case".
 
Ensuite, par définition, on a : '1' = '0' + 1, '2' = '0' + 2 ...  
 
Donc, vous pouvez facilement simplifier votre code.
 
Ou alors, déclarez une chaine qui vaut "0123456789ABCDEF", la fonction strchr devrait faire le travail à votre place (si vous êtes familier avec l'arithmétique des pointeurs).
 
Bonne continuation !
 
Edit : Sinon, vous pouvez utiliser strtol, en travaillant un peu sur les paramètres.


Message édité par Farian le 01-01-2014 à 20:39:58
n°2214742
olivthill
Posté le 02-01-2014 à 09:34:28  profilanswer
 

Il faut profiter du fait que les chiffres se suivent dans les tables de codification, et qu'il en ait de même pour les lettres.
Le seul petit souci est qu'il y a un petit écart entre le '9' et le 'A' dans les tables. Donc, il faut deux traitements séparés, l'un pour les chiffres, et l'autre pour les lettres. On y arrive facilement, par exemple avec ceci :

for(i=0; i<taille; i++) {
  if (val[i] >= '0' && val[i] <= '9')
     hexa[i] = val[i] - '0';
  else
     if (val[i] >= 'A' && val[i] <= 'F')
        hexa[i] = val[i] - 'A' + 10;
}


Message édité par olivthill le 02-01-2014 à 09:34:52

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

  Conversion char en hexa

 

Sujets relatifs
postgresql conversion de typeConversion de texture : alternative à nvtt?
Fusion de 2 hexachar *pString; pString = "Bonjour"; pourquoi ca marche ?
[VBA] [Access] Soucis de byref et conversion de type[C] Remplacer un char dans une chaine de caractère
langage C - PB unsigned charConversion HEX vers DEC
Un pattern pour de la conversion xml->xml ?Conversion hexa en char*
Plus de sujets relatifs à : Conversion char en hexa


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR