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

  FORUM HardWare.fr
  Programmation
  C

  [C]Convertion Ascii -> hexa

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Convertion Ascii -> hexa

n°1984881
danydan26
Posté le 16-04-2010 à 14:43:20  profilanswer
 

Bonjours à tous !  
Je reçoi des informations d'un lien RS232 en Ascii que je voudrais convertire en Hexa, j'ai réaliser un bout de code mais il n'à pas l'air de fonctionner.
(j'utilise un microcontroleur ATMEGA2560 au plus bas niveau donc je ne peux pas utiliser toute les commande du style printf, sscanf, strcmp, stroul...) les pour afficher j'utilise putchar...
voici mon code :
 

Code :
  1. unsigned char asciitohexa(unsigned char C1, unsigned char C2)
  2. {
  3.  unsigned char ret;
  4.  if((C1 >= '0') && (C1 <= '9'))  /*Si caractère 1 est compris entre 0 et 1 */
  5.   ret = (C1 - 0x30) << 4;     /*  << 4 equivalent à multiplication par 16 */
  6.  if((C1 >= 'A') && (C1 <= 'F'))  /*Si caractère 1 est compris entre A et F */
  7.   ret = (C1 - 0x41 + 10) << 4;
  8.  if((C2 >= '0') && (C1 <= '9'))  /*Si caractère 2 est compris entre 0 et 1 */
  9.   ret+= C2 - 0x30;
  10.  if((C2 >= 'A') && (C1 <= 'F'))  /*Si caractère 2 est compris entre A et F */
  11.   ret+= C2 - 0x41 + 10;
  12.  return ret;
  13. }


trouver vous une érreur ?! ou quelque chose de louche dans mon code?

mood
Publicité
Posté le 16-04-2010 à 14:43:20  profilanswer
 

n°1984886
Kenelm
Posté le 16-04-2010 à 14:56:44  profilanswer
 

Tu reçois de l'ASCII, je veux bien, mais c'est de l'hexa que tu reçois en ASCII ?

n°1984891
danydan26
Posté le 16-04-2010 à 15:02:49  profilanswer
 

Je recoi un fichier .hex comme celui ci :
 

Code :
  1. :100000000C9472000C948B000C948B000C948B005D
  2. :100010000C948B000C948B000C948B000C948B0034
  3. :100020000C948B000C948B000C948B000C948B0024
  4. :100030000C948B000C948B000C948B000C948B0014
  5. :100040000C948B000C948B000C948B000C948B0004
  6. :100050000C948B000C948B000C948B000C948B00F4
  7. :100060000C948B000C948B000C948B000C948B00E4
  8. :100070000C948B000C948B000C948B000C948B00D4
  9. :100080000C948B000C948B000C948B000C948B00C4
  10. :100090000C948B000C948B000C948B000C948B00B4
  11. :1000A0000C948B000C948B000C948B000C948B00A4
  12. :1000B0000C948B000C948B000C948B000C948B0094
  13. :1000C0000C948B000C948B000C948B000C948B0084
  14. :1000D0000C948B000C948B000C948B000C948B0074
  15. :1000E0000C948B0011241FBECFEFD1E2DEBFCDBF39
  16. :1000F00000E00CBF12E0A0E0B2E0EEE0F2E000E0D1


 
et je voudrais le convertire en Hexa, (ex pour avoir C en hexa = 0x43)

n°1984907
Kenelm
Posté le 16-04-2010 à 15:16:19  profilanswer
 

Et il est vraiment envoyé en ASCII ? Parce que bon, genre quand un 'A' passe dans le tube, c'est la valeur 0xC en hexadécimal qui passe, ou alors c'est le caractère 'C' ayant la valeur hexadécimale (de mémoire) 0x43 majuscule ou 0x63 minuscule ?
 
Parce que c'est con de transformer des données hexa en texte ASCII pour refaire l'opération inverse, et si t'envoie direct les valeurs en hexa, tu les récupère telles quelles de l'autre côté..

n°1984908
danydan26
Posté le 16-04-2010 à 15:20:44  profilanswer
 

Je suis trop un Anne =$ dsl du dérangement, sa fait 1h que je galère, mon code est bon mais je me suis tromper dans les caractère dans les if :
 

Code :
  1. if((C2 >= '0') && (C1 <= '9'))  /*Si caractère 2 est compris entre 0 et 1 */
  2. ret+= C2 - 0x30;
  3. if((C2 >= 'A') && (C1 <= 'F'))  /*Si caractère 2 est compris entre A et F */
  4. ret+= C2 - 0x41 + 10;


 
 
c'est sur que sa marché pas car j'ai mit c2>='0' && C1 <='9' alors que c'est C2 =s
Dsl du dérangement =s et merci quand mm pour l'aide!  


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

  [C]Convertion Ascii -> hexa

 

Sujets relatifs
[Résolu] Héritage de classe, récupérer attribut de la classe parent[C#] Service Windows vérification fichiers périodique et alerte mail
[Résolu] Arbre "logique" > PDAG & Co.DEV C++
C# DatagridviewTrouver l'adresse d'une méthode C++ en assembleur
Faut-il apprendre le C avant le C++ ?Langage C : concaténation de chaines de caractères
Casse-tête... Class Library C++/CLI vers C#?[C] Aide pour mon Puissance 4 ! =)
Plus de sujets relatifs à : [C]Convertion Ascii -> hexa


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