假设我有char*
个被调用的代码,其中包含"0x41"
。
char *code = "0x41";
如何将其转换为unsigned int
? (确切地说,我需要WORD
,但那只是unsigned int
。
答案 0 :(得分:3)
我收集你的意思是声明为char *code = "0x41";
的变量指向由"0x41"
表示的字符串。
C中没有WORD
这样的东西,但是如果你将它命名为unsigned int
,那么你可以将这个十六进制数字串转换为{{1像这样:
unsigned int
您可以在此代码中注意char *code = "0x41";
unsigned int foo;
assert(sscanf(code, "%X", &foo) == 1);
的使用。我建议用逻辑替换该断言,以便在返回值不为1时报告错误,因为这表明字符串的格式不正确,无法按指定进行解析。
答案 1 :(得分:3)
unsigned int h;
sscanf(code, "%x", &h);
编辑考虑到 ExP 的注释:%x
可以捕获字符串"0x41"
中的值
答案 2 :(得分: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;
}
答案 3 :(得分:2)
你可以使用strtol函数将字符串转换为你想要的任何基数的无符号长整数