¿Cómo convertir char a hexadecimal almacenado en forma uint8_t?

Supongo que tengo estas variables,

const uint8_t ndef_default_msg[33] = {
    0xd1, 0x02, 0x1c, 0x53, 0x70, 0x91, 0x01, 0x09,
    0x54, 0x02, 0x65, 0x6e, 0x4c, 0x69, 0x62, 0x6e,
    0x66, 0x63, 0x51, 0x01, 0x0b, 0x55, 0x03, 0x6c,
    0x69, 0x62, 0x6e, 0x66, 0x63, 0x2e, 0x6f, 0x72,
    0x67
};
uint8_t *ndef_msg;
char *ndef_input = NULL;

¿Cómo puedo convertirndef_input (que es solo un texto plano, como "hola") para hexadecimal y guardar enndef_msg? Como puedes verndef_default_msg está en forma hexadecimal. Datos dentro dendef_msg también debería ser algo así.

Un poco de antecedentes, en el programa original código fuent), el programa abrirá un archivo, obtendrá los datos y lo colocará dentro dendef_msg, que luego se escribirá en una tarjeta. Pero no entiendo cómo puede tomar los datos y convertirlos a hexadecimal.

Quiero simplificar el programa para que solicite directamente al usuario texto (en lugar de pedir un archivo).

Respuestas a la pregunta(8)

Su respuesta a la pregunta