存储在1字节数组中的浮点位移

时间:2014-02-27 13:02:20

标签: c floating-point bit-shift

我有1个字节的数组,用于存储浮点值。我试图使用以下方式提取它。我不确定这是对还是错。

t32 = (float32)((pt[BMW_DATASTARTPOS_NO_QUAL])
      + (float32)(pt[BMW_DATASTARTPOS_NO_QUAL + 1] << 8)
      + (float32)(pt[BMW_DATASTARTPOS_NO_QUAL + 2] << 16)
      + (float32)(pt[BMW_DATASTARTPOS_NO_QUAL + 3] << 24));

2 个答案:

答案 0 :(得分:0)

float的简单“按值”强制转换无法将其转换为二进制表示形式,而是始终转换其数值。

您需要“联合”转换float32,或通过int32指针编写它。

答案 1 :(得分:0)

这应该有效:

memcpy(&t32, &pt[BMW_DATASTARTPOS_NO_QUAL], 4) ;

t32 = *(float*)&pt[BMW_DATASTARTPOS_NO_QUAL] ;

小插图:

float f = 1.5f ;
BYTE b[4] ;
memcpy(b, &f, 4) ;

float l ;
memcpy(&l, &b[0], 4) ;
// now l contains also 1.5f

float k ;
k = *(float*)&b[0] ;
// now k contains also 1.5f
相关问题