mouss8
Messages postés9Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention 2 mars 2004
-
2 mars 2004 à 09:16
gwenCPP
Messages postés20Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention14 septembre 2006
-
9 févr. 2006 à 17:26
existe t-il une fonction qui convertit 4 octets (32 bits) en un float dans la norme IEE 754?
mouss8
Messages postés9Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention 2 mars 2004 2 mars 2004 à 11:29
non ça ne va pas du tout :sad)
je vais expliquer plus clairement mon problème:
Je viens de récupérer sur le port série une trame provenant d'un appareil (un analyseur d'Ozone)
Dans cette trame, 4 octets m'intéressent et qui correspondent à la mesure d'ozone.
par exemple: 0x41242331 qui correspond à 10.2 ppb ( concentration d'ozone dans l'air)
mais quand je fais printf("\n mesure:%f \n",(float)0x41242331);, je n'obtiens pas du tout 10.2
mouss8
Messages postés9Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention 2 mars 2004 2 mars 2004 à 14:35
:)
cool au moins ça marche!
j'ai comprit l'union permet au deux variables d'utiliser le même espace mémoire.
ça m'a inspirer alors j'ai fait ça:
float a;
unsigned long int *b;
b=&a;
*b=0x41242331;
printf("\n mesure:%f \n",a); cool j'obtiens aussi 10.2....
:question) Par contre j'ai 3 soucis:
1) b=&a; provoque un warning car les 2 types ne sont pas compactibles ( comment le caster?)
2) pourquoi peut on lire printf(" 0x%.8x ",*b) la valeur hexa de b ( b étant un entier)
mais pas pouvoir lire printf(" 0x%.8x",a); a étant un float;
j'ai essayé printf(" 0x%.8x",3.14); je n'arrive pas a voir la valeur hexa de 3.14
c'est peut être bete mais je voudrait bien comprendre pourquoi!
3) et dernière interrogation:
Pourquoi je n'obtiens donc pas 10.2.... avec le code en dessous? ( comme a voulu m'aider BruNews)
float c;
c=0x41242331;
printf("%f",c);