Conversione string to byte

ci sono vari errori

byte strConv(String str)
{
char stringa[4];
str.toCharArray(stringa,4);

Serial.println("0: ");
Serial.println(stringa[0]);
Serial.println("1: ");
Serial.println(stringa[1]);
Serial.println("2: ");
Serial.println(stringa[2]);
Serial.println("3: ");
Serial.println(stringa[3]);
Serial.println("4: ");
Serial.println(stringa[4]);

byte a =0;
if (stringa[2] >= '0' && stringa[2] <= '9'){ //estraggo 'B'
   a = stringa[2] - '0';
}else{
   a = stringa[2] - 'A';
}
Serial.println(a, BIN);
a = a << 4; //muovo il valore di 4 bit a sinistra
Serial.println(a, BIN);
if (stringa[3] >= '0' && stringa[3] <= '9'){ //estraggo '1'
   a += stringa[3] - '0';
}else{
   a += stringa[3] - 'A';
}
Serial.println(a, BIN);
return a;
}

correzioni:
indici di array
manca il += nella seconda if
output migliorato

allega l'output di una o più conversioni, grazie.