網上直接給出了下面的方法:
char m[]={0x11, 0x22, 0x33, 0x44};
float f=*((float *)m); //這兒的float占4個位元組
經本人測試,上面的方法在原理上是完全正确的。
但是,請注意!
不同的系統對于發送來的位元組的順序可能不同,在modbus中的位元組順序為:
modbus發送來的順序為:{0x84, 0x31, 0x43, 0x62}; (1)
而變換為float時的順序應該為:{0x31, 0x84, 0x62, 0x43}; (2)
float f=*((float *)m);
這時f的值是正确的,為(2)轉換為float的結果為:226.516