Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

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


Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...