Conversion en C++ d'un nombre binaire en hexa

Fermé
Croco - 20 avril 2009 à 11:23
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 20 avril 2009 à 16:40
Bonjour,

Je voudrais trouver une fonction ou un moyen de faire une conversion d'un binaire en un hexa.

Alors je dispose d'un : int * de 26 cases
celui ci contient alors des 0 et des 1

et je veux convertir ce pointeur dans un unsigned long int en hexa

Est ce que quelqu'un pourrait m'aider svp
Merci d'avance
A voir également:

2 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
20 avril 2009 à 11:30
je considère que la première case correspond au LSB(bit de poids faible)

alors, ,tu as
#define TAILLE 26
int tableau [TAILLE ]={.....};//déclaration de ton tableau (int*), et le remplissage des valeurs .....

on va faire:

unsigned long resultat=0; //le résultat est pour l'instant à 0

int i;
for (i=0;i<TAILLE;i++) //on parcours tout le tableau
resultat+=(tableau[i]<<i); //on ajoute au résultat chaque bit (case du tableau) en le déplaçant vers la gauche du nombre de cases correspondant...

printf("le résultat est %d", resultat);

tiens moi au courant si ça marche, ou si ton ordre est MSB en premier ;)

edit: le type LONG est codé sur 4 octets, ce qui te donne 32 bits-> TAILLE doit etre inférieur ou égal à 32
0
Merci pour ton aide.
Pour mon programme TAILLE vaut toujours 26.

Sinon, je viens d'essayer ce que tu as marqué mais cela ne me donne pas le bon résultat.
De plus, je voudrais récupérer le résultat dans une variable.

et aussi petite précision :
dans mon tableau les deux premières case sont "isolé".
C'est a dire que :
tableau[0] et tableau[1] donneront un chiffre en hexa.
Par contre, le reste ne change pas (toujours ensuite 4 par 4 pour le codage en hexa)
Pour être plus précis, c'est comme si il fallait commencer à coder par la fin du tableau (tableau[25])
(désolé si je ne suis pas très claire)

Merci !
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192 > Croco
20 avril 2009 à 13:48
alors.. dis moi si j'ai bien compris:
- il ne faut pas tenir compte de [0] et [1] ?

Au se situe le bit de poids fort: en début de tableau ou en fin de tableau? (si quand tu écris les nombres dans le tableau du genre [0]=a; [1]=b; [2]=c; es ce qu'en binaire tu dois avoir abc ou cba ???
0
Croco > Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014
20 avril 2009 à 14:48
en faite, il faut quand même tenir de tableau[0] et tableau[1]
alors :

j'ai un tableau comme ca (je ne marque que les indices)
" | " correspond en faite à comment effectuer le codage :

[0] [1] | [2] [3] [4] [5] | .... | [22] [23] [24] [25]

et je dois obtenir un nombre en hexa dans cette ordre la (a b c)

Par contre je viens de trouver comment calculer mais au final, ça m'affiche le nombre en décimal alors qu'il me le faut en hexa ...
et en plus le calcul est un peu trop long ...
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192 > Croco
20 avril 2009 à 15:01
poru afficher en hexa, avec le printf, il faut faire %x je crois
si c'est avec le cout, il faut faire avec l'opérateur <<hex<<
0
Croco > Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014
20 avril 2009 à 15:16
Ok merci mais pour le récupérer dans une variable, comment on fait ?
un printf ça ne sert pas à afficher ?
0
La réponse donnée est absolument n'importe quoi ! (ça fait peur même)
Utilisee la fonction standard de conversion : 1 ligne de code !!!
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
20 avril 2009 à 14:19
c'est quoi ta fonction de conversion standard ?
0
J'aimerai effectivement bien que tu me donne la fonction qui peut convertir un chiffre binaire (int *) et un hexa (int).
Par ce que celle que j'ai fait est un peu longue ...
et qu'il doit y en avoir une plus courte
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192 > Croco
20 avril 2009 à 16:40
attention a ce que tu dis. un int* n'est pas un binaire. C'est un tableau d'entiers que tu utilises pour représenter un binaire. Si tu boulais meme etre correct, tu ferai un tableau de bool.
0