给定一个char,如何将这个char转换为两位数的char,这是二进制表示的十六进制值?
例如,给定一个char,它有一个二进制表示,它是一个字节,例如01010100,它是0x54 .....我需要54的char数组。
答案 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()