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