C 拆分整数的十六进制表示形式并将其保存在字符串中
我试图将变量的十六进制值拆分为字符串。为此,我使用了C 拆分整数的十六进制表示形式并将其保存在字符串中,c,split,hex,printf,C,Split,Hex,Printf,我试图将变量的十六进制值拆分为字符串。为此,我使用了sprintf。但是我得到了一个错误:分段错误(核心转储) 下面是我尝试的代码: #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",
sprintf
。但是我得到了一个错误:分段错误(核心转储)
下面是我尝试的代码:
#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 ;
}
#包括
#包括
int main(){
char*t1;
char*t2;
int n=0x23A;
sprintf(t1,“%X”,n&0xFF);
printf(“t1是:%s\n”,t1);
sprintf(t2、%X、(n>>8)和0xFF);
printf(“t2是:%s\n”,t2);
返回0;
}
例如,我想在0x02
和0x3A
中拆分0x23A
我使用两个字符串,因为我的想法是在最后将它们连接起来,形成一个带有023A
的字符串
是否有其他方法获取此输出,然后请告诉我。您使用的是未初始化的指针,它给出了未定义的行为 只需使用字符数组,就可以为字符串留出一些空间:
char t1[16];
sprintf(t1, "%X", n & ff);
printf("t1 is '%s'\n", t1);
如果您使用的是未初始化的指针,则会打印出未定义的行为 只需使用字符数组,就可以为字符串留出一些空间:
char t1[16];
sprintf(t1, "%X", n & ff);
printf("t1 is '%s'\n", t1);
这应该可以打印
3A
我不知道你为什么要“拆分”它,而你所要做的就是,例如printf(“%04X”,n)
你需要为t1
所指向的书写分配空间。另外,我建议你让指针实际指向某个地方。或者改用数组。请记住为字符串终止符分配一个额外的字符。您正在写入未分配的t1和t2,并指向某个随机地址,从而导致SEGFULT。@某程序员感谢您的帮助,您提供的解决方案对我有效。我不确定您为什么要“拆分”它,而您只需执行printf(“%04X”,n)
您需要为t1
指向的写入分配空间。此外,我建议您让指针实际指向某个地方。或者改用数组。请记住为字符串终止符分配一个额外的字符。您正在写入未分配的t1和t2,并指向某个随机地址,从而导致segfault。@Someprogrammerdude感谢您的帮助,您提供的解决方案对我很有效。感谢您的回答。还有一条评论建议,如果我们使用printf(“%04X”,n)
,那么也不需要拆分值。感谢您的回答。还有一条评论建议,如果我们使用printf(“%04X”,n)
则无需拆分这些值。