【发布时间】:2011-03-31 05:29:28
【问题描述】:
给定一个 char,如何将这个 char 转换为两位数的 char,即二进制表示的十六进制值?
比如给定一个char,它有二进制表示,就是一个字节,比如01010100,就是0x54.....我需要54的char数组。
【问题讨论】:
给定一个 char,如何将这个 char 转换为两位数的 char,即二进制表示的十六进制值?
比如给定一个char,它有二进制表示,就是一个字节,比如01010100,就是0x54.....我需要54的char数组。
【问题讨论】:
其实应该是:
char c = 84;
char result[3];
sprintf(result,"%02x",c);
【讨论】:
这一切都非常容易阅读:-)
#define H(x) '0' + (x) + ((x)>9) * 7
char c = 84;
char result[3] = { H(c>>4), H(c&15) };
【讨论】:
以下代码,使用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()
【讨论】: