Conversion Binaire Hexadécimal

Conversion Binaire Hexadécimal - C - Programmation

Marsh Posté le 11-06-2005 à 16:39:36    

Voilà
Dans mon programme j'ai un tableau à une dimension, chaque case contient uniquement des 0 ou des 1 et je voudrais les convertir en nombres hexadécimaux .
Pourriez vous m'aider ce serais sympa

Reply

Marsh Posté le 11-06-2005 à 16:39:36   

Reply

Marsh Posté le 11-06-2005 à 16:44:13    

http://forum-images.hardware.fr/themes_static/images_forum/1/recherche.gif


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 11-06-2005 à 20:21:55    

Toad_968 a écrit :

Dans mon programme j'ai un tableau à une dimension, chaque case contient uniquement des 0 ou des 1


J'ai rien compris. Donne un exemple avec type et valeurs.

Citation :

et je voudrais les convertir en nombres hexadécimaux .


C'est quoi des nombres hexadécimaux ? Tu veux dire une représentation textuelle hexadécimale d'une valeur numérique ?
 
0 et 1 en représentation héxadécimale, c'est "0" et "1". Pas trop dur...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 12-06-2005 à 00:08:17    

je t'explique :
mon tableau tab[3]={0,1,1,0} par exemple et bien je voudré une fonction qui convertisse ce contenu en valeur decimal en l'occurence 6 .
Je n'arrive pas a trouver la fonction exposant en language C si quelqu'unla connais pourrais t'il me l'as dire ??
merci

Reply

Marsh Posté le 12-06-2005 à 00:44:27    

Exposant? puissance, tu veux dire?
Extrait de man pow :

#include <math.h>
 
double pow(double x, double y);
float powf(float x, float y);
long double powl(long double x, long double y);

Je ne crois pas que ce soit de l'ansi C (peut être du C99?). Mais de toute façon c'est inutile pour ton problème.
 
Pour la conversion, tu prends 4 caractères de ta chaine, tu les convertis en décimal : tu as alors un nombre entre 1 à 16 ; il suffit de rajouter le caractère héxadécimal correspondant dans ta chaine résultat.
 
Et pour convertir du binaire en décimal, il n'y a pas besoin de puissances. Tu prends une variable qui contiendra le résultat, initialisée à 0.
Ensuite tu boucles sur la chaine à convertir, en commençant par le début (ou par la fin si tu convertis un little-endian, évidemment). Tu commences par multiplier la variable résultat par deux, ensuite si tu as un 1 tu rajoutes 1 à cette variable. Fin de la boucle. Problème résolu :D


Message édité par Pillow le 12-06-2005 à 00:48:44
Reply

Marsh Posté le 12-06-2005 à 01:14:48    

Toad_968 a écrit :

je t'explique :
mon tableau tab[3]={0,1,1,0} par exemple et bien je voudré une fonction qui convertisse ce contenu en valeur decimal en l'occurence 6 .
Je n'arrive pas a trouver la fonction exposant en language C si quelqu'unla connais pourrais t'il me l'as dire ??
merci


 

Code :
  1. int tab={0,1,1,0};
  2. int val = 0;
  3. for (i=0;i<4;i++)
  4.    val = (val<<1) | tab[i];


ou

Code :
  1. for (i=0;i<4;i++)
  2.    val = val | (tab[i])<<i;


 
depends d'ou tu mets le poids faible...


Message édité par chrisbk le 12-06-2005 à 01:15:03
Reply

Marsh Posté le 12-06-2005 à 10:26:14    

Toad_968 a écrit :

je t'explique :
mon tableau tab[3]={0,1,1,0}


Pas possible.

int tab[4]={0,1,1,0};


ou

int tab[]={0,1,1,0};


Citation :

par exemple et bien je voudré une fonction qui convertisse ce contenu en valeur decimal en l'occurence 6 .


Tu veux dire en valeur numérique (par exemple 6 en décimal). Il faut être précis sur la terminologie...

Citation :

Je n'arrive pas a trouver la fonction exposant en language C si quelqu'unla connais pourrais t'il me l'as dire ??


exp(), mais tu n'en a pas besoin. Tu dois utiliser une boucle (for...) avec un masque décalé (... << ...).
 
L'idée est de placer chaque bit à sa place dans un entier à partir de sa valeur lue dans le tableau. Il faut aussi définir si tab[0] représente le LSB ou le MSB (pas facile avec un palindrome binaire...)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 12-06-2005 à 10:27:41    

chrisbk a écrit :


int tab={0,1,1,0};




int tab[] = {0,1,1,0};


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 12-06-2005 à 10:30:43    

Stimmt, j'ai tapé direct dans dans la fenetre de reponse a des heures indues donc bon [:zaib3k]

Reply

Marsh Posté le 15-06-2005 à 09:03:01    

Je vient de trouver la fonction exposant qui me fallait  
c'est exp2(valeur)
par exemple 2^2 en C cela donne exp2(2)
merci a tous

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed