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.
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.
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;
}