如何将十六进制的字符串表示形式转换为c中的十六进制值?

时间:2010-12-02 21:46:29

标签: c

如果我有

char input[50] = "xFFFF";
int a;

如何将输入的数值存储在? 语言是C。

4 个答案:

答案 0 :(得分:4)

一种方法可能是:

if (sscanf(input, "x%x", &a) == 0) {
    /* matching failed */
}

如果你的输入使用真正的十六进制说明符(如“0xFFFF”),你只需使用%i:

if (sscanf(input, "%i", &a) == 0) {
    /* matching failed */
}

答案 1 :(得分:2)

您可以使用strtol功能

char *ptr;
long a = strtol( input, &ptr, 16 );

答案 2 :(得分:1)

一种方式:

#include <stdlib.h>

int main()
{
   char *p="xFFFF";
   long lng=strtol(&p[1], (char **)0, 16);
   printf("%ld\n", lng);
   return 0;
}

答案 3 :(得分:0)

请参阅C++ convert hex string to signed integer,如果您处于纯C环境中,请务必向下滚动。