begin process at 2012 05 28 23:06:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Convertion d'un double en hexadecimal (IEEE-754)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Convertion d'un double en hexadecimal (IEEE-754)

dimanche 7 janvier 2007 à 21:29:48 | Convertion d'un double en hexadecimal (IEEE-754)

Cphil51

Salutation a tous.

Je cherche a convertir un double en notation hexadécimale. J'ai deja essayé pour un float (plus simple car il prend que 32 bits), ce qui me donne le code suivant. :


typedef union  {
    float f;
    int i;
} num;

int main()
{
    num fp_num;
    char temp[100];

    fp_num.f = 1.5;
    printf("%s\n", itoa(fp_num.i, temp, 16)); // affichage correct en base 16
}


Maintenant, je voudrais utiliser le même code mais pour un double. Mais les double font 64 bits (donc plus gros que les ints sur platformes 32 bit), ce qui m'interdit d'utiliser l'union d'un double avec en int. Il y a bien un type __int64 sous VC2005 mais la fonction itoi ne semble pas gérer correctement ce type. Si quelqu'un pouvais m'aider a mon problème, je lui en serais très reconnaissant.
dimanche 7 janvier 2007 à 22:00:47 | Re : Convertion d'un double en hexadecimal (IEEE-754)

BruNews

Administrateur CodeS-SourceS
double d;
DWORD *p;
p = (DWORD*) &d;

now tu peux y aller avec *p.

ciao...
BruNews, MVP VC++
dimanche 7 janvier 2007 à 22:48:53 | Re : Convertion d'un double en hexadecimal (IEEE-754)

yann_lo_san

Salut,

On peut aussi extraire la partie entiere et la partie fractionnée avec :

double
modf(doubled, double* pDb);

dimanche 7 janvier 2007 à 22:50:36 | Re : Convertion d'un double en hexadecimal (IEEE-754)

yann_lo_san


Désolé, l'éditeur m'a bouffé quelques espaces.
dimanche 7 janvier 2007 à 23:00:46 | Re : Convertion d'un double en hexadecimal (IEEE-754)

BruNews

Administrateur CodeS-SourceS
Je doute que ça donnerait la représentation hexa du double.

ciao...
BruNews, MVP VC++
dimanche 7 janvier 2007 à 23:03:55 | Re : Convertion d'un double en hexadecimal (IEEE-754)

yann_lo_san

On reconstruit la représentation après bien sur.

dimanche 7 janvier 2007 à 23:08:19 | Re : Convertion d'un double en hexadecimal (IEEE-754)

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Mais enfin il n'y a rien à reconstruire, le double est en forme binaire, suffit de lire les 2 DWORDs le constituant.

char buf[16];
ultoa(*p, buf, 16);
MessageBox(0, buf, "BAS", 0);
ultoa(*(p + 1), buf, 16);
MessageBox(0, buf, "HAUT", 0);

ciao...
BruNews, MVP VC++
lundi 8 janvier 2007 à 12:30:10 | Re : Convertion d'un double en hexadecimal (IEEE-754)

Cphil51

Merci beaucoup pour votre aide, ca a l'air de donner les bonnes valeurs mais les ultoa renvoie une valeure sans les 0 superflus. Est-t-il possible de formatter la chaine renvoyée?

Ex : avec 1.5, la valeure renvoyée est 3FF800000 au lieu de 3FF8000000000000, mais avec 1.35, la valeure est correcrte.
lundi 8 janvier 2007 à 12:40:09 | Re : Convertion d'un double en hexadecimal (IEEE-754)

Cphil51

C'est bon, j'ai fini :

double d = 1.5;
DWORD *p;
char buf[16];

p = (DWORD*) &d;

printf("%08X", *(p + 1));
printf("%08X", *p);

Encore une fois, merci !!
lundi 8 janvier 2007 à 12:42:34 | Re : Convertion d'un double en hexadecimal (IEEE-754)

Cphil51

On peut enlever le char buf[16]; dans le post précédent ^^

1 2

Cette discussion est classée dans : int, num, double, convertion, fp


Répondre à ce message

Sujets en rapport avec ce message

vc++ : pb d'ecriture dans fichier taille sup a prévu [ par adidmamah ] g un groooooo pb qui m'épate sincerementj'ecris dans un fichier en utilisant un structure : struct data { char nom[30]; Au secour ! [ par slashparof ] Au secour! Je ne comprend vraiment pas le problème visual studio me compile cette fonction correctement, mais mon programme cause une erreur quand j'a Convertion "15"(string) --> 15(int) [ par crocejf2000 ] (Re)SalutIl faut que je test ma chaine et que je la convertisse si je peut. Avec atoi("12"), ca me donne bien 12, mais si je fait un atoi("12hach"), c besoin d'aide [ par ekinoks ] voila g trouver un code c++ pour decrypté un fichier mais je m'y conné pas dutout en c++ kunkun pouré m'aidéle code est :void p(FILE* fp, int seed) { enregister les resultats dans un fichier txt. [ par ekinoks ] j'essepaire que vous allé pouvoir m'evité le susside:-/c'est un decrypeteur de fichier, j'aimeré enregistré tout les resultat dans un fichier TXT com convertion char* en int [ par sampq ] Je recupere à partir d'une requete sql un char* que je veux utiliser par la suite dans une boucle for de mon programme, mais la il faudrait que ça soi tableau a double entrée alloué dynamiquement [ par amortlintelligence ] Voila j'aurais voulu utiliser un tableau (tableau de tableau) dans une fonction. Je pense qu'il faut donc que je le crée dynamiquement avec un code du Aide [ par eikonos ] Je travail sur une dll appellé psfg.dllj'ai ces lignes suivant de codetypedef struct CAMERAPARAM_tag{int nGain;int nOffset;int bOffsetFix;int nUpperLi probleme cast [ par morgandetoi06 ] svp aidez moi...j utilise la fonction pow qui renvoie un doubledonc je fait double b; // nombredouble j; // exposantdouble n; // reponsen=pow(b,j);don


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales