Hallo liebe Formumsmitglieder!
Ich hätte mal eine kleine Frage die ich mir bisher nicht erklären
konnte.
Testweise habe ich mir die Funktion itoa() selber geschrieben (steht so
in der Art auch glaube ich hier irgendwo im Forum) und mir anschließend
in AVR-Simulator die Anzahl der Takte angesehen um eine 4-stelligen
integer in eine ASCII-Darstellung umzuwandeln.
Nun meine Frage warum braucht die Funktion aus der stdlib wesentlich
weniger als meine?
Hier meine Funktion:
1 | void my_itoa(uint16_t zahl, char* buffer) {
|
2 | int8_t k;
|
3 | buffer[5] = '\0';
|
4 | for (k=4; k>=0; k--) {
|
5 | buffer[k] = (zahl % 10) + '0';
|
6 | zahl /= 10;
|
7 | }
|
8 | }
|
itoa() braucht dafür 940 Takte, my_itoa() braucht 2092 Takte, also mehr
als doppelt soviel. Wo liegt hier mein Fehler?
Dankeschön schon mal.
Schöne Grüße,
Schwanzus Longus