Conversion ascii=> hexa=>binaire
Bonjour,
Pour un Tp d'info je suis entrain de réaliser un programme permettant la communication entre un pc et un module TES16 ( protocole modbus )
La communication s'effectue sans souci mais c'est au niveau du traitement des donnée que j'ai un problème.
Je développe sous visual c++
Mon premier souci est que j'ai un programme auquel je passe un argument par exemple 55 qui doit être de l'hexa mais il est bien sur interpreter comme de l'ascii ( 3535 en hexa ) j'ai donc fait ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| // Récupération du PF
tampon=argv[1][0]; // On récupère le premier chiffre
tampon=tampon-0x30; // On retire 30 en hexa
if(tampon>0x10) // Si le resultat >10
{
tampon=tampon-0x7; // On lui enlève 7 en hexa
}
tampon=tampon<<4; // On decale de 4 bit vers la gauche
tampon&&0xF0; // On masque pour s assurer du résultat
//Récupération du Pf
tampon2=argv[1][1];// on récupère le second caractères
tampon2=tampon2-0x30;// On retire 30 en hexa
if(tampon2>0x10) // Si le resultat >10
{
tampon2=tampon2-0x7; // On lui enlève 7 en hexa
}
trame[5]=tampon|tampon2; // On fait un ou sur les deux caractère afin d associer PF Pf
printf("Votre paramètre: %2.2X \n",trame[5]); // Vérification du paramètre |
Ma question est donc : n'existe t il pas une solution pour faire ceci automatiquement ( une petite fonction dans visual ).
Ensuite une seconde partie du programme récupère la trame envoyer par le module.
Cette trame ( en hexa ) est stocker dans un tableau d unsigned char
Et je souhaite afficher la trame en binaire. Mais je n'y arrive pas j'aivais penser a faire ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
for(i=0;i<7;i++)
{
bin=entree[i];// On récupère la première valleur hexa
for(j=0;j<7;j++)
{
bit=bin&0x1;// on masque pour avoir le dernier bit
bin=bin>>1; // On decale pour faire tomber le dernier bit
bit=binaire[j]; // On sauvegarde la première valeur binaire
}
printf("%d",binaire[i]);
} |
Si quelqu un pouvait m'orienter ca serait sympa .... :)