Convert char with hex value to String

后端 未结 2 1444
太阳男子
太阳男子 2020-12-20 06:40

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:

<
相关标签:
2条回答
  • 2020-12-20 06:57

    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...
    
    0 讨论(0)
  • 2020-12-20 07:01

    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);
    
    0 讨论(0)
提交回复
热议问题