Comment passer de quatre caracteres a 1 float ? - C - Programmation
Marsh Posté le 23-11-2004 à 21:22:06
Rien compris... Tu as quoi dans des chars, et tu veux en faire quoi ?
Marsh Posté le 23-11-2004 à 21:23:35
kineton>tu t'arranges pour que les 4 caracteres soient alignés (tableau, structure )
mais c'est pas portable ce genre de truc
Marsh Posté le 23-11-2004 à 21:35:26
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.
Marsh Posté le 23-11-2004 à 21:38:52
fais une union
typedef union
{
char char_elt[sizeof(float)];
float flt_value;
} packet;
Marsh Posté le 23-11-2004 à 21:41:41
Yes!!
C'est exactement ce que je dont je vien de penser, merci cris56, je vais tester ca dessuite.
Marsh Posté le 24-11-2004 à 00:34:14
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
Marsh Posté le 23-11-2004 à 21:11:17
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 :
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