我有一个字符串"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.
这个问题经常被问到,但问题并不完全正确。更好的问题应该是:
“如何将十六进制字符串转换为整数值?”
原因是计算机以二进制方式存储整数(或字符或长整数)值。
"6A" = 01101010
只有在人类表示(以字符字符串形式)中,一个值才以某种符号表示法表达出来。
"01101010b" binary
"0x6A" hexadecimal
"106" decimal
"'j'" character
这些都以不同的方式表示相同的值。
但回答这个问题,如何将十六进制字符串转换为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
输出:
j
106
6A
val=strtol(string, NULL, 16);
,它会返回一个long
类型,因此您可能需要检查/转换它。 - Weather Vanechar c[2]="6A"
是一个问题。应该是char c[]="6A"
或者char c[3]="6A"
。除非它有一个终止空字符,否则c
不是一个字符串。 - chux - Reinstate Monica