如果我有以下字符:
wchar_t c = '\x0A'
转换它的简单方法是什么,它变成了:
wchar_t dst[] ==> "0A"
基本上,c的十六进制值变为字符串值。
答案 0 :(得分:6)
c
的整数值为0x0A
(基数为10 10
)。您可以使用sprintf
将其格式化为十六进制:
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...
答案 1 :(得分:1)
可以很容易地编写简单的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);