拆分整数的十六进制表示并将其保存在字符串中

时间:2017-06-29 09:20:23

标签: c split hex printf

我试图在字符串中拆分变量的十六进制值。为此我使用sprintf。但是我收到了一个错误:Segmentation fault (core dumped)

以下是我尝试的代码:

#include <stdio.h>
#include <string.h>

int main() {

char* t1;
char* t2;

int n = 0x23A;

sprintf(t1, "%X", n & 0xFF);
printf("t1 is : %s\n",t1);


sprintf(t2, "%X", (n >> 8) & 0xFF);
printf("t2 is : %s\n",t2);

return 0 ;
} 

例如,我想在0x23A0x02中拆分0x3A 我使用两个字符串,因为我的想法最终将它们连接起来,形成一个023A的字符串。

有没有其他方法可以获得此输出,请告诉我。

1 个答案:

答案 0 :(得分:2)

您正在使用未初始化的指针,它会提供未定义的行为。

只需使用字符数组,这样就可以为字符串留出一些空间:

char t1[16];

sprintf(t1, "%X", n & ff);
printf("t1 is '%s'\n", t1);

这应该打印3A