MFC 将接收的数据转换为float型输出

结果:四个字节的数据转换为了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变量)即可。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值