Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1220 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Conversion Binaire Hexadécimal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversion Binaire Hexadécimal

n°1116691
Toad_968
Posté le 11-06-2005 à 16:39:36  profilanswer
 

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

mood
Publicité
Posté le 11-06-2005 à 16:39:36  profilanswer
 

n°1116696
KangOl
Profil : pointeur
Posté le 11-06-2005 à 16:44:13  profilanswer
 

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


---------------
Nos estans firs di nosse pitite patreye...
n°1116826
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-06-2005 à 20:21:55  profilanswer
 

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/
n°1116921
Toad_968
Posté le 12-06-2005 à 00:08:17  profilanswer
 

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

n°1116929
Pillow
'cos the trees won't talk
Posté le 12-06-2005 à 00:44:27  profilanswer
 

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
n°1116941
chrisbk
-
Posté le 12-06-2005 à 01:14:48  profilanswer
 

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
n°1117021
Emmanuel D​elahaye
C is a sharp tool
Posté le 12-06-2005 à 10:26:14  profilanswer
 

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/
n°1117024
Emmanuel D​elahaye
C is a sharp tool
Posté le 12-06-2005 à 10:27:41  profilanswer
 

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/
n°1117026
chrisbk
-
Posté le 12-06-2005 à 10:30:43  profilanswer
 

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

n°1120302
Toad_968
Posté le 15-06-2005 à 09:03:01  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Conversion Binaire Hexadécimal

 

Sujets relatifs
conversion php ==> pdfconversion de PDF en JPEG en PHP
conversion des requettes du sql en mysql[PHP] Script de conversion vers csv
transfert base de données vers PDA et conversion vb en evbConversion char --> unsigned short
Conversion char ---> unsigned shortConversion "string" vers "char*" et inverse
[C] Comment définir un type de donnée binaire de taille variable ?problème de conversion d'un hexadécimal en binaire !
Plus de sujets relatifs à : Conversion Binaire Hexadécimal


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR