web-dev-qa-db-fra.com

Comment convertir une chaîne en valeur hexadécimale en C

J'ai la chaîne "6A" comment puis-je convertir en valeur hexadécimale 6A?

Veuillez m'aider avec la solution en C

J'ai essayé

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.
8
Allamaprabhu

La question

"Comment puis-je convertir une chaîne en valeur hexadécimale?"

est souvent posée, mais ce n'est pas tout à fait la bonne question. Mieux serait

"Comment puis-je convertir une chaîne hexadécimale en une valeur entière?"

La raison en est qu'une valeur entière (ou char ou long) est stockée de manière binaire dans l'ordinateur.

"6A" = 01101010

Ce n'est que dans la représentation humaine (dans une chaîne de caractères) qu'une valeur est exprimée dans une notation ou une autre

"01101010b"   binary
"0x6A"        hexadecimal
"106"         decimal
"'j'"         character

tous représentent la même valeur de différentes manières.

Mais en réponse à la question, comment convertir une chaîne hexadécimale en 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

Production:

j
106
6A
32
Weather Vane