C 将具有十六进制值的字符转换为字符串
如果我有如下角色:C 将具有十六进制值的字符转换为字符串,c,C,如果我有如下角色: wchar_t c = '\x0A' 有什么简单的方法可以将其转换为: wchar_t dst[] ==> "0A" 基本上,c的十六进制值变成了字符串值。c的整数值将是0x0A(10,以10为基数)。您可以使用sprintf将其格式化为十六进制: wchar_t c = '\x0A'; int c_val = c; char string[3]; sprintf( string, "%.2X", c_val ); 注:不需要中间c_val变量,只是为了清楚起见
wchar_t c = '\x0A'
有什么简单的方法可以将其转换为:
wchar_t dst[] ==> "0A"
基本上,c的十六进制值变成了字符串值。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...
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...
一个简单的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;
}
一个简单的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;
}