Ich habe die Zeichenfolge “6A”, wie kann ich sie in den Hex-Wert 6A umwandeln?
Bitte helfen Sie mir mit der Lösung in C
Ich habe es versucht
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.
Die Frage
“Wie kann ich einen String in einen Hex-Wert umwandeln?”
wird oft gestellt, aber es ist nicht ganz die richtige Frage. Besser wäre
“Wie kann ich einen Hex-String in einen Integer-Wert umwandeln?”
Der Grund dafür ist, dass ein ganzzahliger (oder char oder long) Wert binär im Computer gespeichert wird.
"6A" = 01101010
Nur in der menschlichen Darstellung (in einer Zeichenfolge) wird ein Wert in der einen oder anderen Notation ausgedrückt
"01101010b" binary
"0x6A" hexadecimal
"106" decimal
"'j'" character
alle repräsentieren den gleichen Wert auf unterschiedliche Weise.
Aber als Antwort auf die Frage, wie man einen Hex-String in einen umwandelt 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
Ausgabe:
j
106
6A
Durch die Nutzung
val=strtol(string, NULL, 16);
Es gibt a zurücklong
eingeben, so dass Sie es möglicherweise überprüfen / umwandeln müssen.– Wetterfahne
9. April 2015 um 19:22 Uhr
Verdient keine Abwertung. Es ist eine echte Frage.
– Allamaprabhu
9. April 2015 um 19:24 Uhr
@mah Hoffe, das erfüllt jetzt den Zweck.
– Allamaprabhu
9. April 2015 um 19:37 Uhr
@SteveFenton Danke, aber ich brauchte eine Lösung in C, nicht obj-C.
– Allamaprabhu
9. April 2015 um 19:39 Uhr
char c[2]="6A"
ist ein Problem. sollte seinchar c[]="6A"
oderchar c[3]="6A"
.c
ist kein Schnur es sei denn, es hat ein abschließendes Nullzeichen.– chux – Wiedereinsetzung von Monica
9. April 2015 um 20:40 Uhr