3

假设我有一个char*被调用的代码,它就"0x41"在其中。

char *code = "0x41";

我怎样才能把它转换成一个unsigned int?(确切地说,我需要一个WORD,但这只是一个unsigned int)。

4

4 回答 4

6
unsigned int h;
sscanf(code, "%x", &h);

编辑考虑到ExP的评论:%x可以捕获字符串中的值"0x41"

于 2013-04-10T16:03:17.197 回答
4

我猜你的意思是声明为char *code = "0x41";指向由 . 表示的字符串的变量"0x41"

在 C中没有 a 这样的东西WORD,但是如果你把它 typedef'd as an unsigned int,那么你可以把这个十六进制数字字符串转换成unsigned int这样的:

char *code = "0x41";
unsigned int foo;
assert(sscanf(code, "%X", &foo) == 1);

您可能会注意到assert此代码中的使用。我建议用逻辑替换该断言以在返回值不是 1 时报告错误,因为这表明字符串的格式不正确,无法按指定的方式解析。

于 2013-04-10T16:03:07.017 回答
3
#include <stdio.h>
#include <stdlib.h>

int main() {
    char *code = "0x41";
    char *ck;
    long unsigned lu;

    lu=strtoul(code, &ck, 16);
    printf("%lu\n", lu);

    return 0;
}
于 2013-04-10T16:04:37.837 回答
2

您可以使用 strtol 函数将字符串转换为您想要的任何基数的无符号长整数

http://www.cplusplus.com/reference/cstdlib/strtoul/

于 2013-04-10T16:08:23.733 回答