十六进制转十进制数字,并逐个数字输出的修改?

#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
void main()
{
uint i;
uchar a,b,m;
a=0;
b=0;
m=0;
PB=1;
PR=1;
PY=1;
PX=1;
BELL=0;
D[2]=0;

while(1)

{
Begin_SBUF();
TI=0;
while(!R()); //读取D的全部信息
PB=1;
Delay(2000);

M[0]=D[2]; //c5 或者00、FF
M[1]=D[1]; //2c 或者01、FF
if(D[0]!=0)
{
for(i=0;i<2;i++)
{
a=M[i]>>4; //取高四位
b=M[i]&=0x0f; //取低四位
if(a>=0&&a<=9) //对高四位进行转换
a=a+0x30;
else if(a>=0x0a&&a<=0x0f)
a=a+0x37;
if(b>=0&&b<=9) //对低四位进行转换
m=b+0x30;
else if(b>=0x0a&&b<=0x0f)
m=b+0x37;

  SBUF=a;
    while(!TI);
    TI=0;
    a=0;
  SBUF=m;
    while(!TI);
    TI=0;
    m=0;
    PY=1;
 }
PB=0;
    SBUF=0x0d;
    while(!TI);
    TI=0;

}

这段程序是模拟键盘,逐个输出十六进制的C52C、或者0001、或者FFFF等等4个字符的。我想

把它修改为输出十六进制对应的十进制数据的,并且长度固定5位的,不足5位的在前面补充“0”。比如

十六进制的C52C修改为输出50476,十六进制的0001修改为输出00001,十六进制的FFFF修改为输出65535

。那位能帮忙修改一下!不胜感激!

没看到有输出语句啊,输出前加一个转换函数就可以了啊

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^