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

  FORUM HardWare.fr
  Programmation
  C

  Comment passer de quatre caracteres a 1 float ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment passer de quatre caracteres a 1 float ?

n°906046
kineton
Posté le 23-11-2004 à 21:11:17  profilanswer
 

Bonjour,
 
Je cherche avec mes 4 caracteres, a les "coller" pour en faire un float.
 
J'ai essayé de faire des shift bit a bit :
 

Code :
  1. floattant=(float)a<<24|(float)b<<16|(float)c<<8|(float)d;


 
bien entendu ca ne marche pas, mais ca ne marche pas non plus si je fait le meme chose en "castant" non pas en float mais en unsigned long int, puis en "castant" le resultat en float (il me convertit mon gros chiffre entier en ce meme chiffre mais flottant, alors que moi je veut faire une copie bit a bit)
 
Merci d'avance
 
Max

mood
Publicité
Posté le 23-11-2004 à 21:11:17  profilanswer
 

n°906054
matafan
Posté le 23-11-2004 à 21:22:06  profilanswer
 

Rien compris... Tu as quoi dans des chars, et tu veux en faire quoi ?

n°906056
cris56
Posté le 23-11-2004 à 21:23:35  profilanswer
 

kineton>tu t'arranges pour que les 4 caracteres soient alignés (tableau, structure )
 
mais c'est pas portable ce genre de truc

n°906066
kineton
Posté le 23-11-2004 à 21:35:26  profilanswer
 

En fait je programme un MicroControlleur
 
Je veut sauvegarder dans une EEPROM des float, mais on ne peut lire/ecrire que des mots de 8bits.
 
Tu coup je me suis dit que j'allais traiter mes flottants en 4 elements de 8 bits (un peu lourd certes, mais c'est la seul solution que j'ai trouvé) pour les sauvegarder et les relire par la suite.
 
En fait j'ai juste besoin de savoir traiter mes flotants bit a bit et apres ca devrait aller!
 
En ce qui concerne la protabilité, ce n'est pas tres important vu que mon microcontrolleur sera toujours le meme.

n°906069
cris56
Posté le 23-11-2004 à 21:38:52  profilanswer
 

fais une union
 
typedef union
{
char char_elt[sizeof(float)];
float flt_value;
} packet;

n°906074
kineton
Posté le 23-11-2004 à 21:41:41  profilanswer
 

Yes!!
 
C'est exactement ce que je dont je vien de penser, merci cris56, je vais tester ca dessuite.

n°906229
Taz
bisounours-codeur
Posté le 24-11-2004 à 00:34:14  profilanswer
 

non, c'est naz, à cause des histoires d'alignements et des optimisations du compilateur. si tu veux bourrer quelque chose dans un float, utilise memcpy


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

  Comment passer de quatre caracteres a 1 float ?

 

Sujets relatifs
[php]accent, caractères spéciaux, strtrcomment passer une variable
protection caracteres speciaux[C] Tri bulle sur chaîne de caractères
pb pour passer un structure avec le protocole XDRConversion char en int, float et double
Un div à hauteur maximale en float?Passer des variables entre fichier ?
[VC++] Comment faire passer l'application en avant plan ?Problèmes avec is_float dans mon formulaire
Plus de sujets relatifs à : Comment passer de quatre caracteres a 1 float ?


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