Da String a int: perchè non funziona?

Ho necessità di convertire una stringa mandata dal pc in un numero, dato che atoi() gestisce solo caratteri singoli ho scritto una funzione per la conversione.

//Convert a string into a number 
int stringToInt(String s){
  byte sLen = s.length();
  int retNum = 0;
  lcd.setCursor(8,2);
  //lcd.print (s);  lcd.print ("-");
  
  for(byte k=0; k < sLen; k++){
    retNum += ((byte)s.charAt(k)-48) * pow(10, sLen-k-1);
    lcd.print(((byte)s.charAt(k)-48) * pow(10, sLen-k-1),0); lcd.print("#");
  }
  return retNum;
}

Il tutto sembra funzionare fino a 99: passato 99 il numero è sbagliato di uno in negativo (101 → 100 ecc…).
Ora stampando ogni singola conversione da carattere letto in numero e poi moltiplicandolo per 10 alla … (per ottenere centinaia, decine, unità) i numeri sono giusti, lo vedo tramite la riga:

    lcd.print(((byte)s.charAt(k)-48) * pow(10, sLen-k-1),0); lcd.print("#");

Se invio ad esempio 123 mi da:
100#20#3
dunque il problema sembra dovuto a quando incremento “retNum”…
A cosa può essere dovuto?? Non riesco a capire…pensavo a qualche casino che fa per le conversioni da un tipo all’altro…
:frowning: :frowning: :frowning:

In attesa di qualche saggio prova a dare un occhio qua:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1291399805