假设我有一个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中没有 a 这样的东西WORD
,但是如果你把它 typedef'd as an unsigned int
,那么你可以把这个十六进制数字字符串转换成unsigned int
这样的:
char *code = "0x41";
unsigned int foo;
assert(sscanf(code, "%X", &foo) == 1);
您可能会注意到assert
此代码中的使用。我建议用逻辑替换该断言以在返回值不是 1 时报告错误,因为这表明字符串的格式不正确,无法按指定的方式解析。
#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;
}
您可以使用 strtol 函数将字符串转换为您想要的任何基数的无符号长整数