将带有hex值的char转换为String

如果我有如下角色:

wchar_t c = '\x0A' 

什么是一种简单的方法来转换它,使它变成如下:

 wchar_t dst[] ==> "0A" 

基本上,c的hex值变为字符串值。

c的积分值为0x0A (基数为10)。 您可以使用sprintf将其格式化为hex:

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

请注意,不需要中间c_val变量,仅为了清楚起见而添加

或者你可以手动完成:

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

可以很容易地编写简单的hexifier。 这个将目标字符串作为输入参数:

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

用法:

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