1、在发送端定义一个发送数据
a = 12;
2、与网络通信助手连接后,生成的hex值为:0C 00 00 00
3、接收端连接通信后,接收到这个值并把这个值从十六进制转为十进制;代码为:
temp = (unsigned char)buf[count + 3] << 24 | (unsigned char)buf[count + 2] << 16 | (unsigned char)buf[count + 1] << 8 | (unsigned char)buf[count + 0] << 0;
a = (int *)&temp;
4、运行程序 结果无误
/***************************************************/
但是如果发送端输出double类型的数据a=1.224455887,接收端按照上述代码编写,修改一个地方:a = *(double)&temp; 上面temp是十六进制转为十进制的解包形式,而double是8个字节,int是4个字节,如何修改temp的转码呢??
(把变量temp本身的地址强制类型转化成double型并取出指针的值)
运行程序,结果乱码,并没有生成double类型的数据。
这是为什么呢?该如何编写接收端的代码才能才能把双精度浮点型的数据转换成十进制数据?
请大佬们帮忙!感谢!欢迎交流!_
在接收端如何把接收到的十六进制的双精度浮点型数据转换为十进制的数据输出?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
悬赏问题
- ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
- ¥50 NT4.0系统 STOP:0X0000007B
- ¥15 想问一下stata17中这段代码哪里有问题呀
- ¥15 flink cdc无法实时同步mysql数据
- ¥100 有人会搭建GPT-J-6B框架吗?有偿
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组