Exacto MGLSOFT.
Esta rutina solo trata dos caracteres hex, el pF[0] y el pF[1]. Que podría haberlos puesto directamente sin necesidad de un bucle
for.
Lo que ocurre es que originalmente esta rutina iba a tratar todos los string hex, sin limitación de longitud, multiplicando cada valor del caracter hex por su peso según su posición dentro del string (1,16,256,4096 ...etc).
Pero me di cuenta de que entonces tendría que devolver el resultado sobre una variable de 32 bits siempre ya que hasta ese valor iba a necesitarla ...
Asi que las dividí en distintas rutinas según el resultado a devolver:
int32 hex_to_int32() que realiza dos conversiones consecutivas de
int16 hex_to_int16() que a su vez realiza dos conversiones consecutivas de
int8 hex_to_int8() que a su vez realiza dos conversiones consecutivas de
int8 ascii_to_hex() que es la única que realiza realmente alguna conversión de algo
Esta rutina podría ser perfectamente:
/**\brief Funcion que convierte un string numerico Hexadecimal ASCII NULL-END a su valor entero de 8 bits.
*
* \param pF Puntero al buffer que contiene el string numerico ASCII Hexadecimal de 2 digitos (00h a FFh).
*
* \return int8 Valor numerico.
*/
int8 hex_to_int8(char* pF){
retunt ascii_to_hex(pF[1])+(ascii_to_hex(pF[0])*16);
}