Question: I am doing some microcontroller programming in C. I am reading from various sensors 4 bytes that represent either `float`, `int` or `unsigned int`. Currently, I am storing them in `unsigned int` format in the microcontroller even though the data may be `float` since to a microcontroller they are just bytes. This data is then transferred to PC. I want the PC to interpret the *binary data* as a `float` or an `int` or an `unsigned int` whenever I wish. Is there a way to do that? 

Ex.

```
unsigned int value = 0x40040000; // This is 2.0625 in double
double result = convert_binary_to_double(value); // result = 2.0625

```

Thanks.

PS: I tried typecasting and that does not work.

Answer: 
Keeping in mind that what you're asking for isn't entirely portable, something like this will probably do the job:

```
float value = *(float *)&bits;

```

The other obvious possibility is to use a union:

```
typedef union { 
    unsigned int uint_val;
    int          int_val;
    float        float_val;
} values;

values v;
v.uint_val = 0x40040000;
float f = v.float_val;

```

Either will probably work fine, but neither guarantees portability.
To the PC their also just bytes, and as such could be copied into any 4 byte Int, 4 byte Unsigned Int or 4 byte Float field and the computer would be quite happy. You will need to envelope them, or somehow tag them as int, unsigned, or float. There is NO WAY the compiler can tell from looking at any 32 bit collection of bits what it's type is. - If you need a better explanation, comment me back and I'll give you the real long version - Joe
- Maybe I misunderstod you question. I thought you wanted to ship over 4 bytes of data, and have the compuuter magucly know if the data was origenally a 32 bit Int, 32 bit Unsigned or 32 bit Float. There is no way for the computer to know the answer without additional information.