Combinar 2 caracteres de UART y convertirlos en valor HEX [cerrado]

-1

Recibo dos caracteres del UART:

char UD[2] = {'B','8'}

Necesito convertir esto en un valor hexadecimal, como:

int a = 0xB8;

¿Cómo puedo hacer eso?

Estoy usando el AVR-GCC.

    

1 respuesta

2

Una solución podría ser algo como esto:

// Takes in one of the following characters: "0123456789ABCDEF"
// and returns one of the following integers: 0, 1, 2, ... 13, 14, 15
// No input checking. Use only capital letters.
unsigned int hexCharToInt(char input)
{
    if( '0' <= input && input <= '9')
        return input - '0';
    else
        return input - 'A';
}

// Takes in a two character array ({'0','0'} through {'F','F'}) and constructs
// the corresponding integer. No input checking. Use only capital letters.
unsigned int hexCharArrToInt(char[2] input)
{
    return (hexCharToInt(input[0]) << 4) | hexCharToInt(input[1]);
}

// A general version of the hexCharArrToInt above. Check in to endianess before using
unsigned int arbLenhexCharArrToInt(char[] input, int length)
{
    unsigned int output = 0;
    for(int i = 0; i < length; i++)
        output |= hexCharToInt(input[i]) << 4*(length-i-1);
    return output;
}
    
respondido por el GummiV

Lea otras preguntas en las etiquetas