Cuanto bytes soporta toInt()

Si perdon, los numeros vienen de a pares asi: 33, 00, 57, 1C, se van enviando de esa manera hasta tener los 36 pares

long pollMeters(byte * meter)
{
  byte meterData[8];

  SendTypeR(meter, sizeof(meter));
  waitForResponse(meter[1], meterData, sizeof(meterData));

  String sMeter;
  for (int i = 2; i < 6; i++) {
    sMeter.concat(String(bcd2dec(meterData[i]) < 10 ? "0" : ""));
    sMeter.concat(String(bcd2dec(meterData[i])));
  }
  return sMeter.toInt();
}


void waitForResponse(byte & waitfor, byte * ret, int sz)
{

  byte responseBytes[sz - 2];
  int wait = 0;
  while (Serial1.read() != waitfor && wait < 3000) {
    delay(1);
    wait += 1;
  }

  if (wait >= 3000) {
    Serial.println(F("Unable to read data - timeout"));
    memset(ret, 0, sz);
    sasError = true;
    return;
  }
  Serial1.readBytes(responseBytes, sizeof(responseBytes));
  ret[0] = {0x01};
  ret[1] = waitfor;
  memcpy(ret + 2, responseBytes, sizeof(responseBytes));
  return;

}

Estas son las dos funciones, que funcionan con una trama mas corta pero al volcarla con el toint() tira cualquier cosa, aclaro que sin el toint() si muestra correctamente el valor.