将十六进制值的字符串转换为整数

时间:2015-12-30 13:24:47

标签: c string hex

如何在c?

中将字符串0x26B70A40转换为int
const char s[13] = "0x26B70A40";
int x = someFunction(s);
printf("%d\n", x);

应打印649529920

4 个答案:

答案 0 :(得分:4)

您需要使用stdlib.h中的strtol()功能。

摘自手册页,

  

字符串可以以任意数量的空格开始(由isspace(3)确定),后跟单个可选的'+''-'符号。 如果base为0或16,则该字符串可能包含"0x"前缀,并且该数字将在base 16中读取; [....]

答案 1 :(得分:1)

您可以使用内置函数strtol(char * str,char * end,int base)。

int x = strtol(s,NULL,16);

答案 2 :(得分:1)

尝试使用strtol()功能:

const char *hexstring = "0x26B70A40";
int x = (int)strtol(hexstring, NULL, 0);

答案 3 :(得分:0)

试试这个:

 const char s[13] = "0x26B70A40";
 char **ptr;
 long val;
 val = strtol(s, ptr, 16);