[Solucionado] De binario a integer

Hola tengo esta función que pasa de binario a integer:

//---------------------------------------
//  Pasar de Binario a Integer 
//---------------------------------------
// Esta funcion nos pasa 8 bit de binario a integer 
byte BinToInt (String Binario){
  
  char bin[9];                   // Creamos un array de char

  Binario.toCharArray(bin, 9);   // Pasamos el string al array de char que hemos creado
  
  int i = 0;                     // Variable para el contador
  byte n = 0;            // Variable para calcular el resultado

  while ( bin[i] == '0' || bin[i] == '1' ) {  
    if ( bin[i] == '0' )
      n <<= 1;
    else {
      n ^= 1;
      n <<= 1;
    }
  i++;
  
  }//Fin del while 
  
  n >>= 1;
  return(n);  // Entrega el numero que hemos calculado en decimal.

}// Fin de pasar de binario a integer

si le paso a la función cifras inferiores a 255 en binario, el resultado me lo da bien si le paso 01111111 me entrega 127, pero si le paso 11111111 me entrega 252, y por mas que miro no consigo encontrar el fallo…

Muchas gracias a todos, un saludo.

Hola nuevamente, me lo han solucionado a traves de wassap:

//---------------------------------------
//  Pasar de Binario a Integer 
//---------------------------------------
// Esta funcion nos pasa 8 bit de binario a integer 
byte BinToInt (String Binario){
  
  char bin[9];                   // Creamos un array de char

  Binario.toCharArray(bin, 9);   // Pasamos el string al array de char que hemos creado
  
  int i = 0;                     // Variable para el contador
  int n = 0;            // Variable para calcular el resultado

  while ( bin[i] == '0' || bin[i] == '1' ) {  
    if ( bin[i] == '0' )
      n <<= 1;
    else {
      n ^= 1;
      n <<= 1;
    }
  i++;
  
  }//Fin del while 
  
  n >>= 1;
  return(n);  // Entrega el numero que hemos calculado en decimal.

}// Fin de pasar de binario a integer

Yo tenia byte n = 0; y tiene que ser int n = 0;

Muchas gracias por vuestro interes.