Aller au contenu


Photo
- - - - -

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


  • Veuillez vous connecter pour répondre
7 réponses à ce sujet

#1 djmalo

djmalo

    Junior Member

  • Membres
  • 16 messages

Posté 05 avril 2002 - 12:49

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
  • 0

PUBLICITÉ

    Annonces Google

#2 rickylarsen

rickylarsen

    Extrem Member

  • Membres
  • 754 messages

Posté 05 avril 2002 - 12:55

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
  • 0

#3 djmalo

djmalo

    Junior Member

  • Membres
  • 16 messages

Posté 05 avril 2002 - 12:59

ç'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
  • 0

#4 rickylarsen

rickylarsen

    Extrem Member

  • Membres
  • 754 messages

Posté 05 avril 2002 - 01:12

oh desolé c'est switch case dont je voulais parlé!!!

select case c'est pour visual basic!!

si t'as 15 minutes je vé essayé de te le faire!!
  • 0

#5 rickylarsen

rickylarsen

    Extrem Member

  • Membres
  • 754 messages

Posté 05 avril 2002 - 01:42

non ben laisse tombé le switch case c'est definitivement trop long!!

t'as cherché sur t'es moteurs de recherche conversion hexa binaire?
  • 0

#6 djmalo

djmalo

    Junior Member

  • Membres
  • 16 messages

Posté 05 avril 2002 - 12:39

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
  • 0

#7 KewlCat

KewlCat

    Modérateur

  • Membres
  • 24 812 messages

Posté 05 avril 2002 - 12:54

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.
  • 0

#8 djmalo

djmalo

    Junior Member

  • Membres
  • 16 messages

Posté 05 avril 2002 - 02:31

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
  • 0









Sujets similaires :     x