将十六进制的字节转换为char字符串

时间:2016-05-19 00:47:34

标签: c string char printf

当我尝试将十六进制的一个字节转换为char字符串时,我发现它需要3个字节。我正在使用Visual Studio 2013。

如果我的字节少于3个字节,则会出现错误:"堆栈变量' str'已经腐败了。"

我做错了什么?当然,十六进制值0xF1应该适合char str[1]?为什么我必须声明一个3字节数组来分配一个1字节的值?

char str[3];
sprintf(str, "%02X", 0xF1);

str的内容是0x0026fd18" F1"

1 个答案:

答案 0 :(得分:1)

问题在于试图打印" F1"进入字符串后跟一个空终止符 - 这将是三个字节。这是sprintf函数的重点 - 它将输入格式化为可读字符串。如果你试图简单地将十六进制值0xF1分配给一个char,你可以这样做:

char str = (char)0xF1