如何将串口传来的十六进制数转成十进制打印在显示屏上

2019-07-14 20:52发布

我从串口接受回来的是0X01和0XF4,现在需要将它们转成0X01F4,再转成十进制数,最后 打印到显示屏上,但是我显示屏用的是ILI9341_DispString_EN ( 60, 60, che, macBACKGROUND, macRED )这样的函数,只能显示字符型数据,请问大家有没有好的思路转化成十进制数,想了一天了,在网上找了以下的函数在C语言中可以实现,但在STM32中就不行,因为上面用到了printf函数

#include<stdio.h>
#include<string.h>
#include<math.h>
int func(char s[],int x);
void main()
{
char a[1]={0XF4};
int n;
int num;
//printf("请输入一串十六进制数:");
//scanf("%s",a);
n=strlen(a);
num=func(a,n);
printf("%s=%d",a,num);
}
int func(char s[],int x)
{
int i;
int num=0;
for(i=x-1;i>=0;i--)
{
if(s[i]>='0'&&s[i]<='9')
{
num+=(int)((s[i]-'0')*pow(16,x-i-1));
}
if(s[i]>='a'&&s[i]<='f'){
num+=(int)((s[i]-'a'+10)*pow(16,x-i-1));
}
if(s[i]>='A'&&s[i]<='F'){
num+=(int)((s[i]-'A'+10)*pow(16,x-i-1));
}
}
return num;
}
         
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
PRpr
1楼-- · 2019-07-15 04:55
做个循环就可以吧?
第二台
2楼-- · 2019-07-15 10:04
如果这个程序可以,只是碍于printf函数的话,可以搜一下printf函数重新定向这个问题,就可以用这个函数了。

一周热门 更多>