equivalenza HEX-DEC

Utilizando la serial1 del mio arduino due ricevo in ingresso alcuni valori dopo averli letti ho la necesittà di portarli in decimale e poi visualizzarli su un display tft.
esempio
ricevo il dato 410C1F
devo covertire solo gli ultimi due caratteri cioè 1F da HEX a DEC che sarrebbe 31 qualcuno hai mai fatto qualcosa del genere.

girando su internet ho trovato questo codice

for (i=10;i<14;i++){                              
        if ((bufin[i]>='A') && (bufin[i]<='F')){        //if char is between 'A' and 'F'
          bufin[i]-=55;                                 //'A' is int 65 minus 55 gives 10 which is int value for hex A
        } 
         
        if ((bufin[i]>='0') && (bufin[i]<='9')){        //if char is between '0' and '9'
          bufin[i]-=48;                                 //'0' is int 48 minus 48 gives 0 same as hex
        }

strtol()

sono andato a vedere come funziona quella lib ma non credo la posso usare perchè credo che prenda come punto di riferimento il valore non il carattere quindi l'arduino quando mi legge il valore sulla seriale lo calcola come valore in ascii ecco perchè chiedevo se quella di sopra fosse corretta

@giggir, spiegati, mica è chiaro. Intanto un char E' un valore 'A'=>65 la macchina ragiona a numeri mica a lettere. Poi per noi "umani" 65 ascii equivale a lettera 'A' :o

Quella funzione è specifica per le conversioni testo->numero anche in base esadecimale.
val=strtol(bufin,NULL,16);

L'unica cosa importante è che il testo numerico dentro a bufin DEVE terminare con il carattere speciale di fine stringa '\0' (classico del C)