Rechercher : dans
Par :

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

Dernière réponse le 20 avr 2009 à 16:40:14 Croco, le 20 avr 2009 à 11:23:14 
 Signaler ce message aux modérateurs

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

Configuration: Windows Vista
Firefox 3.0.8

Meilleures réponses pour « Conversion en C++ d'un nombre binaire en hexa » dans :
Conversion d'un nombre entier 32 bits en IP VoirConversion d'un nombre entier 32 bits en IP Nombre à convertir : 3265917058 Représentation binaire 11000010 10101001 11110000 10000010 - 3265917058 00000000 00000000 00000000 11000010 - 3265917058 >> 24 ( 194 ) 11000010 10101001 11110000...
Vérifier si un nombre entier est un nombre premier en C VoirDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Système hexadécimal VoirSystème hexadécimal Les nombres binaires étant de plus en plus longs, il a fallu introduire une nouvelle base : la base hexadécimale. La base hexadécimale consiste à compter sur une base 16, c'est pourquoi au-delà des 10 premiers chiffres on a...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

Nabla's, le 20 avr 2009 à 11:30:10

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

Répondre à Nabla's

2

Croco, le 20 avr 2009 à 13:22:59

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 !

Répondre à Croco

3

Nabla's, le 20 avr 2009 à 13:48:41

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 ???

Répondre à Nabla's

6

Croco, le 20 avr 2009 à 14:48:12

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 ...

Répondre à Croco

7

Nabla's, le 20 avr 2009 à 15:01:15

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<<

Répondre à Nabla's

8

Croco, le 20 avr 2009 à 15:16:40

Ok merci mais pour le récupérer dans une variable, comment on fait ?
un printf ça ne sert pas à afficher ?

Répondre à Croco

9

Nabla's, le 20 avr 2009 à 15:20:08

Dans une variable, qu'il soit en décimel ou en hexa, ca ne change rien. c'est a l'affichage que tu décide comment tu veux l'afficher (forme hexa ou forme decimale)

dans le code que je t'ai filé, la variable "résultat" contient le résultat...

tu epux aussi faire un sprintf pour stocker le résultat sous la forme d'une chaine de caractères, qui aura elle la notation en hexadécimale, si tu le souhaite

Répondre à Nabla's

10

Croco, le 20 avr 2009 à 16:09:47

Merci beaucoup de ton aide !

Répondre à Croco

4

felix, le 20 avr 2009 à 14:17:27

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 !!!

Répondre à felix

5

Nabla's, le 20 avr 2009 à 14:19:26

C'est quoi ta fonction de conversion standard ?

Répondre à Nabla's

11

Croco, le 20 avr 2009 à 16:11:58

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

Répondre à Croco

12

 Nabla's, le 20 avr 2009 à 16:40:14

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.

Répondre à Nabla's