Aller au contenu
djmalo

problème en C:lire un nombre en hexa et le convertir en int?

Messages recommandés

J'ai un problème en C :

Je dois lire sur l'entrée standard un nombre donné en hexadécimal sur 2 chiffres (ex: 7C) et le convertir en un entier pour le mettre dans une variable.

Comment faire?

 

Encore mieux : y'a -t-il moyen de convertir ce nombre en 1 nombre binaire sur 8 positions ?

 

 

Je m'explique plus précisément : Le nombre en hexa que je dois lire représente en fait des "jours actifs" de la semaine pendant lesquel circule un train . Chaque bit représente donc un jour de circulation de la semaine (sauf le bit de poids le plus fort qui ne correspond à rien).

 

7C donnerai : 0111 1100 signifiant qu'il circule en semaine

03 : 0000 0011 signifiant qu'il circule le week-end

40 : 0100 0000 signifiant qu'il circule le lundi

20 : 0010 0000 signifiant qu'il circule le mardi

7F : 0111 1111 signifiant qu'il circule tous les jours

 

Bref à partir de la donné en hexa je dois pouvoir avoir une représentation binaire.

J'éspère avoir été assez clair :P

 

Merci d'avance à ceux qui pourront m'aider :-(

 

Malo

Partager ce message


Lien à poster
Partager sur d’autres sites

je crois que cette question (enfin la conversion hexa-> binaire) à dejà été posée dans le forum fais une petite recherche et aprés d'adapte à ton probleme!!

 

mais bon si ton nombre hexa est toujours sur 2 chiffres c'est pas trop dur!!

 

il suffit de faire un gros select case

Partager ce message


Lien à poster
Partager sur d’autres sites

ç'est quoi ce mystérieux select case dont tu me parles?

 

sinon j'ai fait une recherche comme tu me l'a conseillé , mais malheuresement cela n'a rien donné :P

 

malo

Partager ce message


Lien à poster
Partager sur d’autres sites

ah ok le switch case j'y avais pensé aussi mais ça me semble trop long effectivement :P

 

sinon vi j'ai fait une recherche , mais pour l'instant j'ai du mal à trouver malheuresement

Partager ce message


Lien à poster
Partager sur d’autres sites

Avec un sscanf et le format %X y'aurait pas moyen de récupérer le contenu de ta chaine dans un int ?

(j'ai pas gcc sous la main, je vais avoir du mal à tester et à te filer la soluce de suite...)

A partir du moment où tu as ton nombre sous forme d'int pas la besoin de convertir en "binaire sur huit" ou quoi que ce soit, tu manipules un nombre entier, de toute façon...

Ensuite, pour tester s'il roule un jour, l'opérateur & est super-pratique :

 

sscanf(bufferEntree, "%X", monInt);

if (monInt & 1) { printf("Ca roule le dimanche !); }

 

pareil avec & 2 et samedi, & 4 et vendredi, & 8 jeudi etc.

Partager ce message


Lien à poster
Partager sur d’autres sites

ah oui tiens le & je l'avais pas en tête

faut dire je l'ai jamais vraiment trop utilisé , ç'est une bonne occaz de le tester

 

merci de vos conseils :P

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×