【问题标题】:How to get the binary presentation in hex value of a char如何以 char 的十六进制值获取二进制表示
【发布时间】:2011-03-31 05:29:28
【问题描述】:

给定一个 char,如何将这个 char 转换为两位数的 char,即二进制表示的十六进制值?

比如给定一个char,它有二进制表示,就是一个字节,比如01010100,就是0x54.....我需要54的char数组。

【问题讨论】:

    标签: c char hex


    【解决方案1】:

    其实应该是:

    char c = 84;
    char result[3];
    sprintf(result,"%02x",c);
    

    【讨论】:

      【解决方案2】:

      这一切都非常容易阅读:-)

      #define H(x) '0' + (x) + ((x)>9) * 7
      char c = 84;
      char result[3] = { H(c>>4), H(c&15) };
      

      【讨论】:

        【解决方案3】:

        以下代码,使用snprintf() 应该可以工作:

        #include <stdio.h>
        #include <string.h>
        
        int main()
        {
          char myChar = 'A'; // A = 0x41 = 65
          char myHex[3];
          snprintf(myHex, 2 "%02x", myChar);
        
          // Print the contents of myHex
          printf("myHex = %s\n", myHex);
        }
        

        snprintf() 是一个与printf() 类似的函数,不同之处在于它使用最多 N 个字符填充 char 数组。 snprintf()的语法是:

        int snprintf(char *str, size_t size, const char *format, ...)
        

        其中 str 是要“冲刺”到的字符串,size 是要写入的最大字符数(在我们的例子中为 2),其余的就像普通的printf()

        【讨论】:

          猜你喜欢
          • 2014-12-20
          • 2011-10-02
          • 1970-01-01
          • 2012-02-24
          • 2021-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-30
          相关资源
          最近更新 更多