Ciao a tutti,
Sto tentando di fare un semplice programmino in C, dove dato un certo numero di unsigned char, con 4 di loro si crei una variabil float per poi stamparla a video.
Insomma ho 4 byte in un array e li vogli leggere come una variabile float (mi servirà per leggere un dato in una porta).
Il problema è che devo aver incasinato un po i puntatori, perchè il risultato cambia ogni volta che lancio il programma.
Ci ho sbattuto un bel po la testa, ma non riesco a trovare l'intoppo.
Qualcuno sarebbe coì gentile da volermi aiutare?
Grazie anticipatamente per l'aiuto!
codice:#include <stdio.h> #include <stdlib.h> #define _SPACE printf("\n"); typedef unsigned char BYTE; float *retiflo(char *pun){ unsigned char four[4]; float *ff; four[0] = pun[4]; four[1] = pun[3]; four[2] = pun[2]; four[3] = pun[1]; ff = (float *)&four; return ff; } int main() { BYTE arr[8] = {0x00, 0x06, 0xd0, 0x9c, 0x1e, 0x3e, 0x10, 0x00}; float *fl; int i; char *pc; for(i = 0; i < 7; i++){ printf("%04x ",arr[i]); } pc = &arr; _SPACE fl = retiflo(pc); printf("%12.6f", fl); _SPACE return 0; }



Rispondi quotando


