微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 如何将串口传来的十六进制数转成十进制打印在显示屏上

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

时间:10-02 整理:3721RD 点击:
我从串口接受回来的是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;
}
         

可以使用结构体与共同体。

很简单的进制转换么

做个循环就可以吧?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top