Téléchargement
illégal
Posez votre question Signaler

Conversion Binaire/Hexadécimal en langage C

A2I - Dernière réponse le 30 mars 2011 à 18:33
Bonjour à tous,
je voudrai écrire un programme permettant la conversion d'un chiffre binaire en hexadécimal en langage C.
Et pour cela j'aimerai utilisé une chaine de caractère pour représenter le nombre binaire, ainsi qu'une autre pour le résultat en hexa.
Merci d'avance!!!
Lire la suite 

Conversion Binaire/Hexadécimal en langage C »

11 réponses
Réponse
+0
moins plus
Et bien vas-y, commence, et dis-nous ou tu rencontres des difficultes...

a+
-Qwerti.
Ajouter un commentaire
Réponse
+0
moins plus
En faite on me demande de me servir de programme et des fonction précedement travailler:
j'avais fais un programme permettant la conversion Binaire/Décimal:

#include<stdio.h>
....

void binaire(int nombre, char tab[100])
{
int quotient,i,j;
char c;
i=0;
while(quotient!=0)
{
quotient=nombre/2;
tab[i]= nombre%2==0) ? '0' : '1' ;
nombre=quotient;
i++;
}

tab[i]= '\0';

for (j=0; j<i/2; j++)
{
c=tab[j];
tab[j]=tab[i-1-j];
tab[i-1-j]=c;
}

}

int main()
{
int nombre;
char chaine[100];
printf("saisir un nombre entier: \n");
scanf("%d",&nombre);
binaire(nombre,chaine);
printf("le nombre en binaire est: \n %s ",chaine);

while(1);

return 0;
}

voilà:

maintenant pour cette conversion Bin/Hexa je suis un peu perdu.
comment faudrai t-il que je mi prend? et est ce que je dois réutilisé la fonction...?
Ajouter un commentaire
Réponse
+0
moins plus
Une possibilité serait de mettre les caracteres hexadecimaux dans une matrice :

char carhex[]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};

puis tu remplaces la ligne

tab[i]= (nombre%2==0) ? '0' : '1' ;

par

tab[i] = carhex[nombre%16];

Il faut aussi remplacer

quotient=nombre/2;

par

quotient=nombre/16;

(ceci dit, je doute que tu aies reellement besoin de la variable quotient).

a+
-Qwerti.
Ajouter un commentaire
Réponse
+0
moins plus
merci beaucoup Qwerti, je pense que cela va beaucoup m'aider!!
a+
Ajouter un commentaire
Réponse
+0
moins plus
Chouette :-)

Poste-nous le resultat quand tu auras fini !

a+
-Qwerti.
Ajouter un commentaire
Réponse
+0
moins plus
slt!
existe-t-il une commande permettant de transformer un nombre binaire en un hexadécimal en C?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
je suis novice et je dois faire un programme qui permet de recuperer un hexa en 2 caractere et affiche sa representation en binaire et apres en decimal,
pour l'affichage de decimal pas de souci, par contre pour l'affichage en binaire pb
j'ai trouvé des solutions avec des tab mais on l'a pas vu encore en cours
y'a t il d'autres solutions ??
merci
shastadu69- 29 mars 2011 à 23:32
j'ai pas converti en decimal mais je sais faire l'affichage d'un hexa en decimal
je suis vraiment novice
Hxyp- 30 mars 2011 à 00:05
Mettez la chaine de caractère qui représente le décimal en vrai décimal en utilisant *10 hm..
par exemple si vous avec en ascii "135" prenez chaque nombre , attendez..
#include <stdio.h> 
#include <string.h> 

int fois10e(int n) 
  { 
    int i,r=1; for(i=0;i<n;i++) 
        r*=10; 
    return r; 
  } 

int ascii_dec(const char *dec) 
  { 
    int i, d, resultat=0, taille_dec=strlen(dec); 
    d=taille_dec-1; 
    for(i=0;i<taille_dec;i++,d--) 
      { 
        resultat+=(dec[i]-'0')*fois10e(d); 
      } 
    return resultat; 
  } 



int main(void) 
  { 
    int a; 
    a=ascii_dec("135"); 
    printf("%d\n",a); 
    return 0; 
  } 

Voilà, donc on a un décimal sous la forme d'une chaine "135" ce qu'on veut c'est le mettre en décimal pour de vrai. En prenant le nombre de caractère qui compose le "135", c'est à dire 3 on peut faire la conversion en appliquant un multiple de 10 vu que c'est du décimal.
en premier on a le "1" qu'on converti à l'aide de -'0' (passage de l'ascii en décimal, on peut faire -48) puis on le multiplie par 10*2 en utilisant sa position par oublier qu'on commence à 0 donc sa position n'est pas 3 mais 2 (3-1) en utilisant strlen,
ensuite on a le "3" qu'on multiplie par 10*1 en utilisant sa position (2-1)
et en dernier le "5" qu'on multiplie par 10*0 (r=1 dans la fonction fois10e ce qui évite le problème multiplier par 0 = 0...) revient à multiplier par 1 car il est à la position 0 on ne le change pas.
Et on additionne à chaque opération le résultat contiendra au finale la valeur décimal dans un int.
Edit : me suis planté dans mes idées ce n'est pas 10*2 mais *(10^n)
135 = 1*(10^2)+3*(10^1)+5*(10^0)
shastadu69- 30 mars 2011 à 18:33
merci bcp
Ajouter un commentaire
Ce document intitulé « conversion Binaire/Hexadécimal en langage C » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?