char数组到十六进制转换

时间:2013-02-28 12:38:52

标签: c

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

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

祝你好运, Laurentiu

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

此论坛已在上面的链接中回答。

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

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

char * endptr;

int * ptr;

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