If I have a character like the following:
wchar_t c = \'\\x0A\'
What\'s an easy way to convert it so that it becomes something like:
<The integral value of c
would be 0x0A
(10
in base 10). You can use sprintf
to format it as hex:
wchar_t c = '\x0A';
int c_val = c;
char string[3];
sprintf( string, "%.2X", c_val );
Note the intermediate c_val
variable is not needed, only added for clarity
or you can do it manually:
int c_low = c & 0x0F;
int c_high = ( c & 0xF0 ) >> 4;
...translate c_low and c_high to its textual representation...
A simple hexifier can be written quite easily. This one takes the target string as an input parameter:
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;
}
Usage:
char s[100];
hexify(some_wstr, s, 100);