Hi, kann jemanden mir zeigen wie ich ein Char in uint_32 konvertieren kann #include <stdlib.h> char zahl1[4]="104"; uint16_t zahl2; zahl2 = (uint16_t) strtoul(zahl1, (void *) 0, 16); ich bekomme zahl2 = 104 jetzt ich definiere uint32_t zahl2; zahl2 = (uint32_t) strtoul(zahl1, (void *) 0, 32); ich bekomme zahl2 = 404
Tach, 1. Du möchtest ab sofort immer ein funktionierendes Minimal-Beispiel in einer Code-Umgebung verwenden. (Ich bin faul...) ;-) 2. Du möchtest nicht char konvertieren sondern ein char-array, also einen String! 3. Du möchtest dir die strtoul-Funktion nochmal näher anschauen. Schaue hier für [1]. ;-) 4. Der Teil mit uint16_t wird immer eine Warnung ausgeben, also entweder doch uint32_t verwenden, oder du musst sicherstellen, dass zahl3 nie zu groß für einen uint16_t ist/wird.
1 | char zahl1[4]="104"; |
2 | //long unsigned zahl2;
|
3 | uint16_t zahl2; |
4 | zahl2 = (uint16_t) strtoul(zahl1, (void *) 0, 10); |
5 | //ich bekomme zahl2 = 104
|
6 | printf("zahl1 -> %s \t||\t zahl2 -> %ld \n",zahl1,zahl2); |
7 | |
8 | //jetzt ich definiere
|
9 | uint32_t zahl3; |
10 | zahl3 = (uint32_t) strtoul(zahl1, (void *) 0, 10); |
11 | //ich bekomme zahl2 = 404
|
12 | printf("zahl1 -> %s \t||\t zahl3 -> %ld \n",zahl1,zahl3); |
[1] http://www.goblack.de/desy/sc12chip/c/bibliothek/strtol.html
Hallo Gast. Der Prototyp sieht so aus:
1 | unsigned long strtoul( const char *start, char **end, int base ); |
Du übergibst als base 16 bzw. 32, das ist natürlich völlig falsch, da du ja im Dezimalsystem arbeiten willst, daher zur Basis 10. Dann klappts auch.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.