我在用stm32单片机,接收一个16进制的数,现在我想把这个16进制数转换成十进制数。
这个数值是以一个一个字节的形式返回,第一个假设a='1'(注意它是以字符类型返回),第二个b='A'。ab组合在一起就可以知道这个16进制数为1A,并且它们返回形式都是以单个字符类型的字节返回,现在如何把ab组合后的16进制数字转换成10进制。(我用的编译器是keil4)
希望有人帮我解答一下,谢谢!
比如16进制数是c,你转换成十进制:
uchar t[3];
t[0]=c/100;
t[1]=c%100/10;
t[2]=c%10;
```c
long process( char *input, int length)
{
int i;
long ret = 0;
for(i=0; i < length; i++){
ret <<= 4;
ret += process_one_char(input[i]);
}
return ret;
}
unsigned char process_one_char( char ch)
{
if(ch >= 'a' && ch <='f')
return ch - 'a' + 10;
if(ch >= 'A' && ch <='F')
return ch - 'A' + 10;
if(ch >= '0' && ch <='9')
return ch - '0';
return 0;
}
```