Convertir un float de 4 u_int8_t

J'ai un float variable que j'ai besoin d'envoyer par le biais d'un protocole can. Pour ce faire, ce flotteur de 32 bits doit être coupé dans 4 uint8_t variables.

Je n'ai absolument aucune idée de comment le faire. J'ai d'abord été pensée de convertir le float en int mais quelques réponses que j'ai trouvé sur Internet qui utilisent la fonte ou de l'union ne semble pas fonctionner.

Voici un exemple simple de ce que je suis en train de faire :

float f;
uint8_t ut1,ut2,ut3,ut4;

//8 first bits of f into ut1
//8 second bits of f in ut2
...

//Then I can send the uint8_t through CAN
...

Grâce.

Ne voulez-vous pas uint8_t[4] au lieu de 4 * uint8_t variables?
Aussi montrer le code que vous utilisez et une certaine idée de la méthode que vous appelez (c'est à dire sa sémantique).
J'ai besoin de 4 différents variable distincte si possible , mais un onglet peut être ok. Je n'ai pas le code de bonne à vous montrer ... seul test avec des acteurs et de l'union
double de stackoverflow.com/questions/21005845/how-to-get-float-bytes stackoverflow.com/questions/18270974/... stackoverflow.com/questions/3991478/... stackoverflow.com/questions/7157301/... ...

OriginalL'auteur Evans Belloeil | 2014-08-19