DBO Geschrieben 16. April 2002 Geschrieben 16. April 2002 hi, ich hab ein char *str_seg1; welches folgenden Wert enthält: str_seg1 = "00000b01"..... wie man hier erkennen kann ist hier eine hexadezimalzahl abgespeichert........ nun möchte ich dieses in eine Dezimalzahl zurückwandeln.... folgendes hab ich schon versucht: long ltest = atol(str_seg1); ---->liefert 0 zurück d.h. Wert konnte nicht konvertiert werden (ist mir inzwischen auch klar warum, laut msdn steigt atol beim ersten zeichen das keine Zahl ist mit 0 aus) danach hab ich es probiert mit sprintf hinzubekommen....doch irgendwie hat da auch alles net geklappt...... vielen dank an alle die sich jetzt wegen mir den kopf zerbrechen :D P.S. Irgendwas noch unklar?? Wenn ja einfach posten.. Zitieren
DBO Geschrieben 16. April 2002 Autor Geschrieben 16. April 2002 an scanf hab ich auch schon gedacht nur hat des irgendwie als ich es probiert hab auch net geklapt.....aber da ich heut sowieso schon den ganzen Tag auf den schlau steh und an lauter dummen fehlern hängen bleib post ich vorsichtshalber nochmal den Code: char *str_seg2, *str_seg1; // //viel Code u. a. mit speicherreservierung und initialisierunv der //beiden variablen. //Inhalt von str_seg1 vor nächster Zeile: 00000b01 //Inhalt von str_seg 2 vor nächster Zeile: "" scanf(str_seg2, "%x", &str_seg1); //Inhalt nach der Zeile von str_seg1: 00000b01 //Inhalt nach der Zeile von str_seg2: "" p.s. speicher für str_seg2 wurde ausreichend resservierd Zitieren
Klotzkopp Geschrieben 16. April 2002 Geschrieben 16. April 2002 Wenn Du scanf mit %x benutzt, musst Du einen Zeiger auf int mitgeben. Du willst doch von dem String weg. Zitieren
DBO Geschrieben 16. April 2002 Autor Geschrieben 16. April 2002 das er die typen nicht konvertiern kann.... naja ich hab etz aber glaub ich die lösung und zwar *trommelwirbel* die funktion: strtol :eek: laut beschreibung müsste das genau das sein was ich suche......nur ich mach etz erstmal feierabend...ich sag euch dann morgen bescheid wies klappt cu Zitieren
nic_power Geschrieben 16. April 2002 Geschrieben 16. April 2002 Sollte funktionieren, strtol wandelt strings in integers um und kann dabei zu einen Basis von 2-36 arbeiten. In Deinem Fall: long value=strtol(string, NULL, 16); Nic Zitieren
DBO Geschrieben 18. April 2002 Autor Geschrieben 18. April 2002 -strtol hat wunderschön funktioniert....... Nur leider gibt es so eine funktion nicht für den Palm so das ich sie nachprogrammieren musste:( aber glücklicherweise war das einfacher als ich dachte bis dann......zum nächsten Problem Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.