结果:四个字节的数据转换为了float型数据,可以输出显示
代码:CString str;
char tempc[4] = { 0x6,0x28,0x1,0x44 };
float tempf;
// memcpy(&tempf, tempc, 4);
// str.Format(_T("%f"), tempf); 对应的浮点型是 44 01 28 06 对应的浮点型
unsigned int n;
memcpy(&n, tempc, 1);
n = n << 8;
memcpy(&n, &tempc[1], 1);
n = n << 8;
memcpy(&n, &tempc[2], 1);
n = n << 8;
memcpy(&n, &tempc[3], 1);
memcpy(&tempf, &n, 4);
str.Format(_T("%f"), tempf);
SetDlgItemText(IDC_EDIT1, str);
MessageBox(str);
过程:用char型数组,接收发送的十六位进制数据,比如C1 48 00 00,那么转换为float型应为-12.5,使用强制转换,即先定义一个float型的变量,再将内存里的数据copy进去。但是发现数据不太对,因为copy时char型数组里的高字节数据(比如char[0])的被放在了float变量的低字节,所以float存放的数据变为了00 00 48 C1;所以先把数据存入int型的变量,每存入一字节左移八位,然后copy int型变量里的数据到float型,然后输出format(“%f”,定义的float变量)即可。