Convertir char(HEX) a decimal.

Hola, como estan? esta es la primera vez que voy a utilizar el foro de forma activa, siempre han sido muy utiles los aportes existentes pero en este caso no econtre una respuesta facilemente interpretable de acuerdo a mi basico nivel de programacion.

El problema en cuestion es que necesito convertir un numero hexadecimal que viene en un char array decimal para poder operar con el.

Este dato (el numero hexadecimal) llega como parte de un mensaje mas largo por el serial y es almacenado en un array donde filtro solo la parte que me interesa.

La variable es esta: (a modo de ejemplo pongo que puede llegar dentro de cada posicion

char DATA_OUT[9] = {0, 0, 0, 0, 0, 2, 3, B, EXT}; (tiene 9 posiciones porque a lo ultimo guarda el final de texto)

si imprimo este array en el serial quedaria "0000023b".

Me interesaria obtener el valor en decimal, de este char que representa un HEX, osea que yo pudiera tener una variable que contenga "571" apartir de DATA_OUT.

No tengo problemas para hacer esta conversion cuando el char que llega es de solo 1 byte, osea hasta 0xFF = 0d255. Para esto uso la funcion strtoul.

El problema es cuando el numero que llega por el serial y se almacena en DATA_OUT sobrepasa 0xFF y es por ejemplo 0x23C. La funcion strtoul solo agarra 3c.

Gracias por leer y espero sus sugerencias.

Cada posición tiene un peso, y si sabes eso entonces puedes convertir lo que sea

hablas de funciones pero no vemos tu código

No se que es EXT asi que no lo consideraré

void setup() {
  Serial.begin(115200);

  char receivedByte[16], *p;
  char data[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x02, 0x03, 0x0b };
  sprintf(receivedByte, "0x%X%X%X%X%X%X%X%X", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]);
  Serial.print("Array Hexadecimal      : ");
  Serial.println(receivedByte); // con esto me aseguro haberlo copiado bien
  unsigned long intNumber = strtol(receivedByte, &p, 16);
  Serial.print("El numero en decimal es: ");
  Serial.println(intNumber);
}

void loop(){

}