我有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));
答案 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