嗯,我一直在尝试将此整数转换为十六进制并已成功完成,但我需要使用此十六进制来设置某些内容。现在为此我需要使用 char 而不是 char 数组。如果不手动设置,其他任何方法都不起作用。也许问题在于我使用 sprintf 转换为十六进制的问题,但无论如何我确信有一种方法可以完成此任务。现在我需要改变的是让输出为 char z 但我还没有找到一种方法来让它工作。任何帮助是极大的赞赏。谢谢
编辑:现在该代码可能没有直接意义,因为它不完整,而且我没有看到输入不相关代码的目的。 int x 永远不会超过 100,重点是将其转换为十六进制并将其写入我拥有的设置的内存中。所以我一直在试图弄清楚如何将整数转换为十六进制转换为字符。正如有人指出的那样,尽管 sprintf 将其转换为存储在 char 中的字符串,但正如我刚刚注意到的那样,它是非字符串。但我需要将 int 转换为十六进制,并稍后将其分配给 char 变量 forbuse。这就是我陷入困境的地方。我不知道在不使用字符串和其他东西的情况下以格式和方式完全完成所有这些操作的最佳方法。
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;
}
最佳答案
如果您想要的是:
WriteSetting(70);
或
WriteSetting(0x46);
做同样的事情
char z = 0x46;
unsigned char y = z;
那么您需要做的就是:
void WriteSetting(int x)
{
unsigned char y = x;
}
整数没有任何固有的基数 - 它们只是数字。 unsigned char y = 0x46;
和 unsigned char y = 70;
之间没有任何区别。
关于c++ - C/C++ 整数到十六进制到字符 数组到字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954591/