浮点数转换成ASCII码
/*将浮点数处理为ASCII码6位有效数字,这里为了整齐 如:0.01234当作6位有效数字
*/
void float_TO_ascii(float a, uint8_t dat)
{
if(1000<=a&&a<10000)
{
dat = (int)a%10000/1000 + 0x30;
dat = (int)a%1000/100 + 0x30;
dat = (int)a%100/10 + 0x30;
dat = (int)a%10 + 0x30;
dat = 0x2e;
dat = (int)(a*10)%10 + 0x30;
dat = (int)(a*100)%10 + 0x30;
dat = 0;
dat = 0;
dat = 0;
}
if(100<=a&&a<1000)
{
dat = (int)a%1000/100 + 0x30;
dat = (int)a%100/10 + 0x30;
dat = (int)a%10 + 0x30;
dat = 0x2e;
dat = (int)(a*10)%10 + 0x30;
dat = (int)(a*100)%10 + 0x30;
dat = (int)(a*1000)%10 + 0x30;
dat = (int)(a*10000)%10 + 0x30;
dat = 0;
dat = 0;
}
if(10<=a&&a<100)
{
dat = (int)a%100/10 + 0x30;
dat = (int)a%10 + 0x30;
dat = 0x2e;
dat = (int)(a*10)%10 + 0x30;
dat = (int)(a*100)%10 + 0x30;
dat = (int)(a*1000)%10 + 0x30;
dat = (int)(a*10000)%10 + 0x30;
dat = (int)(a*100000)%10 + 0x30;
dat = 0;
dat = 0;
}
if(1<=a&&a<10)
{
dat = (int)a%10 + 0x30;
dat = 0x2e;
dat = (int)(a*10)%10 + 0x30;
dat = (int)(a*100)%10 + 0x30;
dat = (int)(a*1000)%10 + 0x30;
dat = (int)(a*10000)%10 + 0x30;
dat = (int)(a*100000)%10 + 0x30;
dat = 0;
dat = 0;
dat = 0;
}
if(0<=a&&a<1)
{
dat = 0x30;
dat = 0x2e;
dat = (int)(a*10)%10 + 0x30;
dat = (int)(a*100)%10 + 0x30;
dat = (int)(a*1000)%10 + 0x30;
dat = (int)(a*10000)%10 + 0x30;
dat = (int)(a*100000)%10 + 0x30;
dat = 0;
dat = 0;
dat = 0;
}
if(-1<a&&a<0)
{
dat = 0x2d;
dat = 0x30;
dat = 0x2e ;
dat = (int)(-a*10)%10 + 0x30;
dat = (int)(-a*100)%10 + 0x30;
dat = (int)(-a*1000)%10 + 0x30;
dat = (int)(-a*10000)%10 + 0x30;
dat = (int)(-a*100000)%10 + 0x30;
dat = 0;
dat = 0;
}
if(-10<a&&a<=-1)
{
dat = 0x2d;
dat = (int)(-a)%10 + 0x30;
dat = 0x2e ;
dat = (int)(-a*10)%10 + 0x30;
dat = (int)(-a*100)%10 + 0x30;
dat = (int)(-a*1000)%10 + 0x30;
dat = (int)(-a*10000)%10 + 0x30;
dat = (int)(-a*100000)%10 + 0x30;
dat = 0;
dat = 0;
}
if(-100<a&&a<=-10)
{
dat = 0x2d;
dat = (int)(-a)%100/10 + 0x30;
dat = (int)(-a)%10 + 0x30;
dat = 0x2e ;
dat = (int)(-a*10)%10 + 0x30;
dat = (int)(-a*100)%10 + 0x30;
dat = (int)(-a*1000)%10 + 0x30;
dat = (int)(-a*10000)%10 + 0x30;
dat = 0;
dat = 0;
}
if(-1000<a&&a<=-100)
{
dat = 0x2d;
dat = (int)(-a)%1000/100 + 0x30;
dat = (int)(-a)%100/10 + 0x30;
dat = (int)(-a)%10 + 0x30;
dat = 0x2e ;
dat = (int)(-a*10)%10 + 0x30;
dat = (int)(-a*100)%10 + 0x30;
dat = (int)(-a*1000)%10 + 0x30;
dat = 0;
dat = 0;
}
if(-10000<a&&a<=-1000)
{
dat = 0x2d;
dat = (int)(-a)%10000/1000 + 0x30;
dat = (int)(-a)%1000/100 + 0x30;
dat = (int)(-a)%100/10 + 0x30;
dat = (int)(-a)%10 + 0x30;
dat = 0x2e ;
dat = (int)(-a*10)%10 + 0x30;
dat = (int)(-a*100)%10 + 0x30;
dat = 0;
dat = 0;
}
}
有木有无聊的同学们,帮忙把空间复杂读缩小下,算法优化下:lol
这也太复杂了吧。。。。 我去,你想干什么啊! 596142041 发表于 2015-7-5 21:37
这也太复杂了吧。。。。
浮点数转换成字符串送串口而已:lol 七颗咖啡豆 发表于 2015-7-8 10:42
浮点数转换成字符串送串口而已
我见过比较好的办法就是采用共用体的方式来实现效果不错,但是这需要考虑的是同一系列的MCU是没问题,如果不同系列的控制器不知道行不行
页:
[1]