Hallo, Ich habe folgendes Problem, das ich nicht lösen kann: Ich möchte einen beliebigen unsigned 8bit Integer so "auseinander nehmen", dass ich auf die einzelnen Ziffern zugreifen kann. Nun habe ich mir gedacht das ganze erst in ein String umzuwandeln, und die einzelnen chars (Ziffern) dann wieder in ein int umzuwandeln. Sieht bei mir wie folgt aus: char ascii[4]; uint8_t ziffer; utoa(123,ascii,10); // 123 beliebiger int-Wert ziffer=atoi(ascii[0]); // erste ziffer aus ascii speichern Schlicht und einfach: Es funktioniert nicht, und ich kann mir nicht erklären warum. Bin mit C noch nicht sehr vertraut. Vielleicht kann mich hier jemand auf den Fehler aufmerksam machen. Danke im Voraus!
Jabu schrieb: > Es funktioniert nicht, und ich kann mir nicht > erklären warum. Weil atoi als Argument einen String erwartet und nicht ein einzelnes Zeichen. Jabu schrieb: > Ich möchte einen beliebigen unsigned 8bit Integer so "auseinander > nehmen", dass ich auf die einzelnen Ziffern zugreifen kann. Dann benutze doch dezimale Arithmetik. Die Hunderter sind z.B. "Zahl / 100" und die Einer sind "Zahl % 10". Die Zehner kannst du ja mal selbst versuchen.
Jabu schrieb: > Nun habe ich > mir gedacht das ganze erst in ein String umzuwandeln, und die einzelnen > chars (Ziffern) dann wieder in ein int umzuwandeln. warum so kompiziert? 456 / 100 = 4 (456 / 10)%10 = 5 456 %10 = 6 > ziffer=atoi(ascii[0]); // erste ziffer aus ascii speichern man muss bei atio einen string übergeben, ein zeichen geht so nicht. ziffer = ascii[0] - '0';
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.