www.mikrocontroller.net

Forum: Compiler & IDEs Benutzung von strtoul


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: atat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
  char zahl1[4]="104";
  //long unsigned zahl2;
  uint16_t  zahl2;
  zahl2 = (uint16_t) strtoul(zahl1, (void *) 0, 10);
  //ich bekomme zahl2 = 104
  printf("zahl1 -> %s \t||\t zahl2 -> %ld \n",zahl1,zahl2);

  //jetzt ich definiere
  uint32_t zahl3;
  zahl3 = (uint32_t) strtoul(zahl1, (void *) 0, 10);
  //ich bekomme zahl2 = 404
  printf("zahl1 -> %s \t||\t zahl3 -> %ld \n",zahl1,zahl3);

[1] http://www.goblack.de/desy/sc12chip/c/bibliothek/strtol.html

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gast. Der Prototyp sieht so aus:
 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke zusammen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.