Se connecter / S'enregistrer

Résolu [C]Convertion Ascii -> hexa

Solutions (2)
Tags :
  • Ascii
  • Programmation
, Maître Yoda |
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 :


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



trouver vous une érreur ?! ou quelque chose de louche dans mon code?
Je tien a précisé que dans un premier temps je recoi un octet C1 puis un octet C2 et je veux concaténer les 2 pour avoir les 2 en un seul (ex: C1=0 et C2=C je veux C3=0x0C voila pk j'utilise ret+)
Contenus similaires
  • Autres pages sur : convertion ascii hexa
Meilleure solution
partage
|
Dans tes 2 derniers if, tu réutilises C1 au lieu de C2 pour le second test. ;) 

Le reste me parait correct.
  • Commenter cette solution |
Score
0
òh
òi
, Maître Yoda |
Meilleure réponse sélectionnée par danydan01.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS