Langage en c conversion binaire hexa

Alex31750 Messages postés 7 Statut Membre -  
Alex31750 Messages postés 7 Statut Membre -
Bonjour tout le monde, je suis actuellement en IUT mesures physiques et je dois réaliser pour la rentrée un programme de conversion (binaire, hexa, décimal) en langage C. J'ai commencé à travailler dessus, j'ai réussi le programme "binaire-->décimal" mais là je bloque un peu sur le "binaire --> hexa".

j'ai fait mon programme de telle sorte qu'il effectue le travail sur un premier quartet puis sur le deuxième avant de mettre les deux résultats à la suite et de donner donc le résultat sur le bit entier.
J'aimerai affecter A à 10, B à 11, C à 12, D à 13, E à 14 et F à 15 comme dans le langage hexadécimal de base mais je n'y arrive pas, si vous pouviez m'aider, voici mon programme :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int BinToHex()
{
    int poids_binaire[4];
    int digit;
    int i,k;
    int binaire[4];
    int resultat = 0;

    poids_binaire[0]=1;
    poids_binaire[1]=2;
    poids_binaire[2]=4;
    poids_binaire[3]=8;


    printf("Entrer un nombre binaire:\n\n");

        for (i=0;i<4;i++)
        {
            printf(" 1 er quartet : entrer le bit numero %d :\n ",i);
            scanf("%d",&digit);
            if (digit!= 0 && digit!= 1)
                {
                    printf("RENTREZ UN 0 OU UN 1, ICI IL NE S\'AGIT PAS D\'UN MOT BINAIRE\n");
                    printf("Entrer le bit numero : %d\n ",i);

                    scanf("%d",&digit);

                }

            binaire[i]=digit;
            //printf("bin=%d\n",binaire[i]);
            //printf("poids=%d\n",poids_binaire[i]);

        }
          for(k=0;k<4;k++)
          {
           resultat = resultat + binaire[k]*poids_binaire[k];


          }
          return (resultat);

}
int BinToHex1()
{
    int poids_binaire1[4];
    int digit1;
    int i1,k1;
    int binaire1[4];
    int resultat1 = 0;

    poids_binaire1[0]=1;
    poids_binaire1[1]=2;
    poids_binaire1[2]=4;
    poids_binaire1[3]=8;


    printf("Entrer un nombre binaire:\n\n");

        for (i1=0;i1<4;i1++)
        {
            printf(" 2 eme quartet : entrer le bit numero %d :\n ",i1);
            scanf("%d",&digit1);
            if (digit1!= 0 && digit1!= 1)
                {
                    printf("RENTREZ UN 0 OU UN 1, ICI IL NE S\'AGIT PAS D\'UN MOT BINAIRE\n");
                    printf("Entrer le bit numero : %d\n ",i1);

                    scanf("%d",&digit1);

                }

            binaire1[i1]=digit1;
            //printf("bin=%d\n",binaire[i]);
            //printf("poids=%d\n",poids_binaire[i]);

        }
          for(k1=0;k1<4;k1++)
          {
           resultat1 = resultat1 + binaire1[k1]*poids_binaire1[k1];

          }
          return (resultat1);
}
int main()
{
    int choix_operation;
    int decimal;
    int decimal1;
    int hexadecimal;
    int dec;
    int i;

        decimal = BinToHex();
        decimal1 = BinToHex1();

        printf("Le resultat en base decimale de l'octet est donc: %d%d\n",decimal,decimal1);





    return 0;
}
A voir également:

1 réponse

Alex31750 Messages postés 7 Statut Membre
 
Je m'étais trompé de programme, excusez moi. Voilà si je mets 1111 et 1111 dans les quartets j'obtiens donc "1515" alors que je voudrais obtenir "FF"
0