嗯,我一直在试图将这个整数转换为十六进制,并已成功完成,但我需要使用此十六进制设置的东西。现在,我需要使用char而不是char数组。没有其他工作没有手动设置。也许问题在于我使用sprintf转换为十六进制的问题,但无论哪种方式,我确信有一种方法可以完成此任务。现在我需要改变的是输出是char z,但我还没有找到一种方法来使这个工作。任何帮助是极大的赞赏。谢谢C/C++整数到十六进制字符数组到字符
编辑:现在thi代码可能没有直接意义,因为它是不完整的,我看到没有目的输入不相关的代码。 int x永远不会超过100,整个点就是将它转换成一个十六进制,并将它写入我拥有的设置的内存中。所以我一直想弄清楚如何将整数转换为十六进制字符。有人指出,即使sprintf将它转换为存储在字符串中的字符串,正如我刚才注意到的那样。但我需要将int转换为十六进制,并将其分配给一个char变量,以备后用。这就是我被卡住的地方。我不知道以一种格式和方式完整地完成所有这些事情的最佳方式,而不会涉及到字符串和其他内容。
VOID WriteSetting(int x)
{
char output[8];
sprintf(output, "0x%X", x);
char z = 0x46
unsigned char y = z
}
工作代码:
VOID WriteSetting(int x)
{
unsigned char y = (unsigned char)x;
Settingdb.Subset.Set = y;
}
我不明白这一点。转换,char数组,char,int ...都是什么? – 2013-06-06 05:55:27
'0x46'和''0x46''之间有很大的区别' –
使用sprintf时要非常小心,输出缓冲区只有4个字符长,所以如果x在255以上,你会遇到麻烦。一点弦理论也许在这里不会有问题。如果你使用C++查看std :: string,它将解决很多问题。 – Cramer