如何以char的十六进制值获取二进制表示

时间:2010-08-17 20:52:38

标签: c char hex

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

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

3 个答案:

答案 0 :(得分:4)

实际上它会是:

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

答案 1 :(得分:1)

这很容易阅读: - )

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

答案 2 :(得分:0)

使用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是要“sprint”的字符串,size是要写入的最大字符数(在我们的例子中是2),其余的就像普通的printf()