-1

我有一个问题,希望你们能帮助我。我正在为我的项目使用 32 位 uC。我通过 Uart 接收从键盘到 uC 的字符(通过超级终端)。因为我只使用 C,所以我将这些字符存储到 char 类型的缓冲区中。例如,我需要发送一个十六进制地址作为输入,例如 0xff502035。我用超级终端通过 Uart 发送它,并将它一个字符一个字符地存储在我的缓冲区中。然后我想将它转换为一个整数(来自char),以便将它进一步传递给我的函数,该函数将读取存储在该位置的值。

所以我需要的是:将 char[] 转换为 int。所以如果我的缓冲区包含 "0xff502035" ,我需要它作为 0xff502035 整数类型。提前感谢你们帮助我。

最好的问候,劳伦蒂乌

4

2 回答 2

0

我不会提供“如何将字符串转换为数字”的完整示例,但请看一下该strtol函数。

于 2013-02-28T12:41:53.607 回答
0

这个论坛已经回答了,上面的链接。

但是,完成帖子后,虽然地址已以十六进制格式记录并作为字符串传输,但它实际上是最终以二进制格式解释的地址。strtoul 函数可以在 32 位和 64 位系统上安全地使用,以将十六进制格式的地址转换回原始格式。

字符 *buf; // 包含字符串格式的地址

字符 *endptr;

诠释*ptr;

ptr = (int*)strtoul(buf, &endptr, 16);

于 2013-02-28T12:54:43.333 回答