2014-02-27 43 views
0

我有一个存储浮点值的1字节数组。我正在尝试使用以下方法提取它。我不确定这是对还是错。存储在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

我不完全知道你正在尝试做的,但肯定是不对的。 – mjs

+0

移位漂浮物!决不!。 – tesseract

+0

除非我误解了(),否则它实际上将转换的结果转换为浮动,而不是转移浮动本身。尽管 – mjs

回答

0

一个简单的“按价值”一float铸无法将其转换为/从它的二进制表示,它将永远不会将其数值代替。

您需要“联合投射”float32,或通过int32指针将其写入。

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 
+0

如果我们必须将float从array [2]开始复制到unit8数组[7],我们该怎么做。 – user3285192

+0

@ user3285192:请详细说明您的问题,不清楚您要问什么。 –

+0

我有一个uint8 arr [8]; Float32 F32。我想将Float32复制到数组缓冲区中。前2个元素/字节应该是空的。 float32的值应该出现在arr [2-5]中。 – user3285192

相关问题