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;
}