【发布时间】:2018-03-27 12:47:00
【问题描述】:
我有将 int 转换为 unsigned char * 的代码:
int i = //a number <= 15;
unsigned char * byte = (unsigned char *) &i;
我这样做是因为我需要那个 int 的字节值。
后来我想把这个字节值附加到一个char *,所以我需要把它转换成一个字符串。
Ex. if: int i = 15;
then: unsigned char * byte = F;
但是我需要将其转换为:
char * string = "F";
我试过了:
char * string = (char *) &byte;
//and
char * string = (char *) byte;
//or just straight up treating it like a char * by going:
printf("%s", byte);
和其他几种组合,但它们都导致了段错误。有谁知道我该怎么做?或者即使有一种更简单的方法可以将 int 转换为 char 中的十六进制表示?
我是 C 的新手,感谢任何答案。
【问题讨论】:
-
如果
0 <= i <= 15,看起来你想要unsigned char byte = (unsigned char)i;和char string[2] = {(char)byte, '\0'};?这听起来对吗,还是这里涉及的字节不止一个? (你真的需要printf,还是putchar可以正常工作?) -
char byte[2]; sprintf(byte, "%X", (unsigned char)i); printf("%s", byte); -
是的,没错,我实际上只需要一个字节而不是字节数组,所以
unsigned char就足够了。我知道“%X”是打印无符号字符的方式,但我实际上想将转换后的char附加到现有的char *上,而不仅仅是打印它。 (打印语句实际上只是用于调试) -
当
i是单个无符号字符时,char character = (char) i似乎不起作用 -
@Miradham Kamilov That 不是附加,而是连接。
sprintf()不擅长追加。
标签: c char type-conversion unsigned