如何在C中将字符串转换为十六进制值

All*_*bhu 8 c string hex

我有字符串"6A"我怎么能转换成十六进制值6A?

请帮我解决C语言的问题

我试过了

char c[2]="6A"
char *p;
int x = atoi(c);//atoi is deprecated 

int y = strtod(c,&p);//Returns only first digit,rest it considers as string and
//returns 0 if first character is non digit char.
Run Code Online (Sandbox Code Playgroud)

Wea*_*ane 32

这个问题

"如何将字符串转换为十六进制值?"

经常被问到,但这不是一个正确的问题.更好的是

"如何将十六进制字符串转换为整数值?"

原因是,整数(或char或long)值以二进制方式存储在计算机中.

"6A" = 01101010
Run Code Online (Sandbox Code Playgroud)

仅在人类表示(在字符串中)中,值以一种表示法或另一种表示法表示

"01101010b"   binary
"0x6A"        hexadecimal
"106"         decimal
"'j'"         character
Run Code Online (Sandbox Code Playgroud)

所有都以不同的方式表示相同的值.

但在回答这个问题时,如何将十六进制字符串转换为 int

char hex[] = "6A";                          // here is the hex string
int num = (int)strtol(hex, NULL, 16);       // number base 16
printf("%c\n", num);                        // print it as a char
printf("%d\n", num);                        // print it as decimal
printf("%X\n", num);                        // print it back as hex
Run Code Online (Sandbox Code Playgroud)

输出:

j
106
6A
Run Code Online (Sandbox Code Playgroud)