C 将十六进制字节转换为字符字符串
当我尝试将十六进制的一个字节转换为字符字符串时,我发现它需要3个字节。我正在使用Visual Studio 2013 如果少于3个字节,则会出现错误:“变量'str'周围的堆栈已损坏。” 我做错了什么?十六进制值0xF1肯定应该适合C 将十六进制字节转换为字符字符串,c,string,char,printf,C,String,Char,Printf,当我尝试将十六进制的一个字节转换为字符字符串时,我发现它需要3个字节。我正在使用Visual Studio 2013 如果少于3个字节,则会出现错误:“变量'str'周围的堆栈已损坏。” 我做错了什么?十六进制值0xF1肯定应该适合char str[1]?为什么我必须声明一个3字节数组来分配一个1字节的值 char str[3]; sprintf(str, "%02X", 0xF1); str的内容是0x0026fd18“F1”问题是试图将“F1”打印到字符串中,后跟一个空终止符-这将是三个字
char str[1]
?为什么我必须声明一个3字节数组来分配一个1字节的值
char str[3];
sprintf(str, "%02X", 0xF1);
str
的内容是0x0026fd18“F1”问题是试图将“F1”打印到字符串中,后跟一个空终止符-这将是三个字节。这就是sprintf函数的全部要点——它将输入格式化为可读字符串。如果您试图简单地将十六进制值0xF1分配给一个字符,您可以这样做:
char str=(char)0xF1
问题是试图将“F1”打印到字符串中,后跟一个空终止符-这将是三个字节。这就是sprintf函数的全部要点——它将输入格式化为可读字符串。如果您试图简单地将十六进制值0xF1分配给一个字符,您可以这样做:
char str=(char)0xF1
有一个“F”、一个“1”和一个NUL
。这是3个字节。有一个“F”、一个“1”和一个NUL
。这是3个字节。谢谢你,这很有意义!很高兴我能帮忙!如果你对我的回答感到满意,请记住接受我的回答。谢谢你,这很有意义!很高兴我能帮忙!如果你满意的话,记得接受我的回答。