二进制int加倍没有类型转换

Nih*_*had 2 c binary microcontroller casting

我做一些微控制器的编程中C.我来自各种传感器的4个字节,代表任一读取float,intunsigned int.目前,我将它们以unsigned int格式存储在微控制器中,即使数据可能是float微控制器,它们只是字节.然后将该数据传输到PC.我希望PC将二进制数据解释为a float或an int或者unsigned int我希望的时候.有没有办法做到这一点?

防爆.

unsigned int value = 0x40040000; // This is 2.0625 in double
double result = convert_binary_to_double(value); // result = 2.0625
Run Code Online (Sandbox Code Playgroud)

谢谢.

PS:我尝试了类型转换,但这不起作用.

Jer*_*fin 7

请记住,您要求的并不是完全可移植的,这样的事情可能会起作用:

float value = *(float *)&bits;
Run Code Online (Sandbox Code Playgroud)

另一个明显的可能性是使用联合:

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

values v;
v.uint_val = 0x40040000;
float f = v.float_val;
Run Code Online (Sandbox Code Playgroud)

两者都可能正常工作,但都不能保证可移植性.