我有代码为int转换成一个无符号的char *这样:转换无符号字符*为char *字符串C
int i = //a number <= 15;
unsigned char * byte = (unsigned char *) &i;
我这样做,因为我需要的是整型字节值。 后来我想把这个字节值附加到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)字节,'\ 0'};'?这听起来是对的吗,还是有超过一个字节涉及? (你真的需要'printf',还是'putchar'能正常工作?) – Ryan
'char byte [2]; sprintf(byte,“%X”,(unsigned char)i); printf(“%s”,byte);' – BLUEPIXY
是的,这是正确的我实际上只需要一个字节而不是一个字节数组,所以'unsigned char'就足够了。我知道“%X”是打印无符号字符的方式,但我实际上想将转换后的'char'追加到现有的'char *',而不是只打印它。 (打印语句实际上只是为了调试) – k1234