Benutzung von strtoul

Gast #986904
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
Gast #986961
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
#986963
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.