C de la Fonction de Convertir flotteur de tableau d'octets

Je suis en train de faire une fonction qui va accepter une variable de type float et de le convertir en un tableau d'octets. J'ai trouvé un bout de code qui fonctionne, mais souhaitez réutiliser dans une fonction si possible.

Je travaille aussi avec l'environnement Arduino, mais je comprends qu'il accepte la plupart des langage C.

Actuellement fonctionne:

float_variable = 1.11;
byte bytes_array[4];

*((float *)bytes_array) = float_variable;

Que puis-je modifier pour que cela fonctionne?

float float_test = 1.11;
byte bytes[4];

//Calling the function
float2Bytes(&bytes,float_test);

//Function
void float2Bytes(byte* bytes_temp[4],float float_variable){ 
     *(float*)bytes_temp = float_variable;  
}

Je ne suis pas familier avec les pointeurs et, mais j'ai lu que (float) est à l'aide de moulage ou de quelque chose?

Toute aide serait grandement appréciée!

Acclamations

*EDIT: RÉSOLU

Voici ma dernière fonction qui fonctionne dans l'Arduino pour toute personne qui le trouve. Il y a des solutions plus efficaces dans les réponses ci-dessous, cependant, je pense que c'est ok pour comprendre.

Fonction: convertit entrée variable de type float de tableau d'octets

void float2Bytes(float val,byte* bytes_array){
  //Create union of shared memory space
  union {
    float float_variable;
    byte temp_array[4];
  } u;
  //Overite bytes of union with float variable
  u.float_variable = val;
  //Assign bytes to input array
  memcpy(bytes_array, u.temp_array, 4);
}

Appel de la fonction

float float_example = 1.11;
byte bytes[4];

float2Bytes(float_example,&bytes[0]);

Merci pour l'aide de tous, j'ai beaucoup appris sur les pointeurs et le référencement dans les 20 dernières minutes, les Acclamations de Débordement de Pile!

OriginalL'auteur Ben Winding | 2014-06-25