Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将十六进制字节转换为字符字符串_C_String_Char_Printf - Fatal编程技术网

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

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”打印到字符串中,后跟一个空终止符-这将是三个字

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

如果少于3个字节,则会出现错误:“变量'str'周围的堆栈已损坏。”

我做错了什么?十六进制值0xF1肯定应该适合
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个字节。谢谢你,这很有意义!很高兴我能帮忙!如果你对我的回答感到满意,请记住接受我的回答。谢谢你,这很有意义!很高兴我能帮忙!如果你满意的话,记得接受我的回答。