从C中的hex-string获取uint

时间:2013-04-10 15:58:59

标签: c string hex type-conversion

假设我有char*个被调用的代码,其中包含"0x41"

char *code = "0x41";

如何将其转换为unsigned int? (确切地说,我需要WORD,但那只是unsigned int

4 个答案:

答案 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函数将字符串转换为你想要的任何基数的无符号长整数

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

相关问题