假设我有一个名为code的
char*
,其中包含"0x41"
。char *code = "0x41";
如何将它转换为unsigned int
?(确切地说,我需要一个WORD
,但那只是一个unsigned int
)。
char*
,其中包含"0x41"
。char *code = "0x41";
如何将它转换为unsigned int
?(确切地说,我需要一个WORD
,但那只是一个unsigned int
)。
unsigned int h;
sscanf(code, "%x", &h);
编辑 考虑到ExP的评论: %x
可以捕获字符串"0x41"
中的值。
我理解您的意思是,声明为char *code = "0x41";
的变量指向由"0x41"
表示的字符串。
C语言中没有WORD
这种类型,但如果您将其typedef为unsigned int
,那么可以像下面这样将这个十六进制数字字符串转换为unsigned int
:
char *code = "0x41";
unsigned int foo;
assert(sscanf(code, "%X", &foo) == 1);
你可能注意到了这段代码中使用了assert
语句。我建议将该断言替换为逻辑以在返回值不为1时报告错误,因为这意味着字符串不符合规定的解析格式。
0x
是多余的,因为“%X”应该可以捕获它(对我来说确实如此)。 - Elmar Peise#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;
}