Come convertire un float in un char di 4 byte in C?

Voglio convertire un numero float per esempio 2.45 per il char array di 4 byte. quindi il 2.45 dovrebbe apparire come questo '@' 'FS' 'Ì' 'Í' che è binario la rappresentazione 2.45 = 01000000 00011100 11001100 11001101 di 2.45 = 01000000 00011100 11001100 11001101 ?

Ho risolto il problema ma ha una ctriggers complessità. hai qualche buona idea?

Grazie per le buone risposte.

puoi dirmi, per favore, la via del ritorno dal campo dei caratteri al numero del galleggiante?

Hai alcuni modi per farlo, inclusi questi due:

  1. Usa typecasting e puntatori:

     float f = 2.45; char *s = (char *) &f; 

    Si noti che questo non è sicuro in alcun modo e che non vi è alcun terminatore di stringa dopo la “stringa”.

  2. Usa un union :

     union u { float f; char s[sizeof float]; }; union u foo; foo.f = 2.45; 

    Ora è ansible accedere al char array per ottenere i valori di byte. Nota anche come la prima alternativa non c’è un terminatore di stringhe.

Basta usare memcpy:

 #include  float f = 2.45f; char a[sizeof(float)]; memcpy(a, &f, sizeof(float)); 

Se si richiede l’endianness opposto, allora è una cosa banale invertire i byte in a successivo, ad es

 int i, j; for (i = 0, j = sizeof(float) - 1; i < j; ++i, --j) { char temp = a[i]; a[i] = a[j]; a[j] = temp; }