Convertir char con valor hexadecimal a String

Si tengo un personaje como el siguiente:

wchar_t c = '\x0A' 

¿Qué es una forma fácil de convertirlo para que se convierta en algo como:

 wchar_t dst[] ==> "0A" 

Básicamente, el valor hexadecimal de c se convierte en un valor de cadena.

El valor integral de c sería 0x0A ( 10 en base 10). Puedes usar sprintf para formatearlo como hexadecimal:

 wchar_t c = '\x0A'; int c_val = c; char string[3]; sprintf( string, "%.2X", c_val ); 

Tenga en cuenta que la variable c_val intermedia no es necesaria, solo se agrega para mayor claridad

o puedes hacerlo manualmente:

 int c_low = c & 0x0F; int c_high = ( c & 0xF0 ) >> 4; ...translate c_low and c_high to its textual representation... 

Un simple hexificador se puede escribir con bastante facilidad. Este toma la cadena de destino como un parámetro de entrada:

 unsigned int hexify(const wchar_t * src, char * dst, unsigned int dstlen) { static const char alphabet[] = "0123456789ABCDEF"; unsigned int i = 0; while (*src && 2*i + 1 < dstlen) { dst[2*i] = alphabet[*src / 16]; dst[2*i+1] = alphabet[*src % 16]; ++src; ++i; } dst[2*i] = 0; return i; } 

Uso:

 char s[100]; hexify(some_wstr, s, 100);