专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
如何把十进制浮点数转换为十六进制的32位单精度IEEE754格式
2020-01-20 19:14
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
2243
12
12
如何把十进制浮点数转换为十六进制的32位单精度IEEE754格式呢?
比如一个十进制数0d1010.0,转换为IEEE754格式为0x447C8000,然后把数据发送出去,
搜索一番,没找到答案,好像是库函数可以?哪位有代码呢,谢谢。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
xf331785508
2020-01-22 06:23
本帖最后由 xf331785508 于 2015-1-15 18:08 编辑
arm7tdmi 发表于 2015-1-15 16:37
这种办法貌似不行啊,能得到整数部分,小数部分总是被抹去,变为0,
union Data
{
double srcData;
u8 memData[sizeof(srcData)];
};
double am = 1010.0f;
union Data d;
void fun(void)
{
unsigned char table[sizeof(am)] = {0}, i = 0, *p = NULL;
p = (unsigned char*)&am;
for( i = 0; i < COUNTOF(table); i++ ){
table[i] = *(p + i);
printf("table %u value is %u ", i, table[i]);
}
d.srcData = am;
printf("%u ", d.memData[0]);
MemToFlash(d.memData, sizeof(d));
sendData((u8*)d.memData, sizeof(d)); // <==> sendData((unsigned char*)&am, sizeof(am));
}
//你的代码改一下也是等效的
double a = 1010.001;
unsinged char txdata[sizeof(a)] = {0};
void func(void)
{
unsigned long data = 0;
a=1010.0f; //10进制
data = *((unsigned long*)&a);
txdata[0] = (data >> 56) & 0xff;
txdata[1] = (data >> 48) & 0xff;
txdata[2] = (data >> 40) & 0xff;
txdata[3] = (data >> 32) & 0xff;
txdata[4] = (data >> 24) & 0xff;
txdata[5] = (data >> 16) & 0xff;
txdata[6] = (data >> 8) & 0xff;
txdata[7] = a & 0xff; //发送代码
}
复制代码
加载中...
查看其它12个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- union Data
- {
- double srcData;
- u8 memData[sizeof(srcData)];
- };
- double am = 1010.0f;
- union Data d;
- void fun(void)
- {
- unsigned char table[sizeof(am)] = {0}, i = 0, *p = NULL;
- p = (unsigned char*)&am;
- for( i = 0; i < COUNTOF(table); i++ ){
- table[i] = *(p + i);
- printf("table %u value is %u
", i, table[i]);
- }
- d.srcData = am;
- printf("%u
", d.memData[0]);
- MemToFlash(d.memData, sizeof(d));
- sendData((u8*)d.memData, sizeof(d)); // <==> sendData((unsigned char*)&am, sizeof(am));
- }
- //你的代码改一下也是等效的
- double a = 1010.001;
- unsinged char txdata[sizeof(a)] = {0};
- void func(void)
- {
- unsigned long data = 0;
- a=1010.0f; //10进制
- data = *((unsigned long*)&a);
- txdata[0] = (data >> 56) & 0xff;
- txdata[1] = (data >> 48) & 0xff;
- txdata[2] = (data >> 40) & 0xff;
- txdata[3] = (data >> 32) & 0xff;
- txdata[4] = (data >> 24) & 0xff;
- txdata[5] = (data >> 16) & 0xff;
- txdata[6] = (data >> 8) & 0xff;
- txdata[7] = a & 0xff; //发送代码
- }
复制代码一周热门 更多>