Conversion Binaire Hexadécimal - C - Programmation
Marsh Posté le 11-06-2005 à 16:44:13
ReplyMarsh 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...
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
Marsh Posté le 12-06-2005 à 00:44:27
Exposant? puissance, tu veux dire?
Extrait de man pow :
#include <math.h> |
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
Marsh Posté le 12-06-2005 à 01:14:48
Toad_968 a écrit : je t'explique : |
Code :
|
ou
Code :
|
depends d'ou tu mets le poids faible...
Marsh Posté le 12-06-2005 à 10:26:14
Toad_968 a écrit : je t'explique : |
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...)
Marsh Posté le 12-06-2005 à 10:27:41
chrisbk a écrit :
|
int tab[] = {0,1,1,0}; |
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
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
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