在C语言中,对数组{0x01,0x02,0x03}与4字节float数据102.03之间的相互转化如何实现呢?谢谢大家

 我来答
loveKEYBOARD
2013-04-09 · TA获得超过382个赞
知道小有建树答主
回答量:746
采纳率:86%
帮助的人:387万
展开全部
如果你知道这个数组里面的各个位置对应float的个位百位和小数位的话,直接用算术相加就可以了。比如:
char group[3]={0x01,0x02,0x03};
float sum;
sum = group[0]*100+group[1]+group[3]*0.01;
完成。
追问
那反过来如何转换呢?
百度网友180fa75
2013-04-09 · TA获得超过337个赞
知道小有建树答主
回答量:416
采纳率:100%
帮助的人:249万
展开全部
先把十六进制转换为十进制,再用float类型输出,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伊·梵beec
2013-04-09 · TA获得超过2162个赞
知道大有可为答主
回答量:1897
采纳率:0%
帮助的人:1392万
展开全部
#include<stdio.h>
int main()
{
char ch[3]={0x1,0x2,0x3};
float f = ch[0]*100 + ch[1] + ch[2]*0.01;
printf("%.2f\n", f);
return 0;
}
更多追问追答
追问
那把102.03转化为{0x01,0x02,0x03}呢?
追答
#include
#include
int main()
{
int ch[3];
float f=102.03;
char tmp[16];
int len;
sprintf(tmp, "%.2f", f); //先转成字符串
len=strlen(tmp);
if(len==6)
{
ch[0] = tmp[0]-'0';
ch[1] = (tmp[1]-'0')*10 + tmp[2]-'0';
ch[2] = (tmp[4]-'0')*10 + tmp[5]-'0';
}
else if(len==7)
{
ch[0] = (tmp[0]-'0')*10 + tmp[1]-'0';
ch[1] = (tmp[2]-'0')*10 + tmp[3]-'0';
ch[2] = (tmp[5]-'0')*10 + tmp[6]-'0';
}

printf("ch %d %d %d\n", ch[0], ch[1],ch[2]);
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式