单片机数据接收编码问题,请高手指点迷津
有一块机子,不知道怎么接收解析它的数据,望请高手帮助
输出二进制数据,其中:
1、每个数据的低字节在前,高字节在后。
2、双精度数结构(64 bits)
MSB (bit 63) = Sign
Bit 62-52 = Exponent (exp)
Bit 51-00 = Mantissa= 2exp(-1)*bit51 + 2 exp(-2)*bit50...
Value = Sign * 1.mantissa * 2 exp(EXP-1023)
数据中,由先至后的顺序为:Bit 7 - 0, Bit 15 - 8, Bit 23 - 16, Bit 31 - 24, Bit 39 - 32, Bit 47 - 40, Bit 55 - 48, Bit 63 – 54
没搞懂应该怎么解析这些数据
C#语言
小弱跪求指导。。
[解决办法]
大端数据
看这结构像是浮点数或double,如果是的话直接强制转换就行了
假设你最终接收到的数是uint64_t dat;
double decode(uint64_t dat){double ret;uint16_t exp;exp=(dat&0x7ff0 0000 0000 0000)>>52;//得到EXPret=(double)(dat&0x000f ffff ffff ffff);//得到mantissaif(dat&0x8000 0000 0000 0000==0x8000 0000 0000 0000)//得到sign{ret=-ret;}for(;exp!=0;exp--)ret*=2;return ret;}