从整数数组中提取浮点数

时间:2015-02-25 12:09:11

标签: c arrays pointers floating-point

我有一个整数数组,其中,我知道前4个字节是浮点数,secon 4个字节是另一个浮点数等等;提取浮点数我使用这样的浮点指针:

uint8_t  l_buffer[17];
float32  num1 = *(float*)&(l_buffer);
float32  num2 = *(float*)&(l_buffer[4]);

并且一切都很完美,但我不明白为什么!!!!事实上,我尝试使用没有'*'的指针:

float32  num1 = (float*)&(l_buffer);
float32  num2 = (float*)&(l_buffer[4]);

但它不起作用。对不起,但是(float *)&(l_buffer)不是强制指向l_buffer数组第一个位置的浮动指针?为什么我需要添加'*'?

1 个答案:

答案 0 :(得分:0)

当你写(float*)(anystuff)时,你有一个浮动指针。

所以是的(float*)&(l_buffer)是对浮点指针的强制转换为数组的第一个位置。

但是没有从float指针到float的显式转换,所以这不起作用:

float  num1 = (float*)&(l_buffer);  // error (float*) is not (float)

但是你可以想要像float f = *(pFloatPointer)一样读取指向的值,这就是为什么这样可行:

float  num1 = *(float*)&(l_buffer); // ok *(float*) is a (float)

同时转换为float*为您提供索引设施:

float f1 = *(float*)&(l_buffer[4]);    // 4th element of a uint8_t array
float f2 = ((float*)l_buffer)[1];      // 1th element of a float array
                                       // So f1 == f2