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