ab组合在一起就可以知道这个16进制数为1A,并且它们返回形式都是以单个字符类型的字节返回,现在如何把ab组合后的16进制数字转换成10进制

我在用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;
}

```