Hallo Kollegen,
ich arbeite gerade an einem Motorradtacho (und das ist auch schon mein 6ter Tread diesbezüglich :/)...
Die Gesamtlaufleistung (Millimeter) möchte ich als "uint64_t GesamtMillimeter;" speichern; die Anzeige auf dem Display soll natürlich in KiloMeter erfolgen.
Demnach will ich die Millimeter per Sprintf() "umwandeln":
Folgender Code funktioniert, bringt mir aber Compilerwarnungen
(warning: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'uint64_t {aka long long unsigned int}):
Mal angenommen ich würde die Compilerwarnungen von oben ignorieren und es mit
sprintf(GesamtKm, "%6ukm", GesamtMillimeter/1000000);
probieren... (es funktioniert ja augenscheinlich)... ist das ne schlechte Idee?
Es warnt halt, dass es Zahlen abscheidet, welche nicht in den Bereich passen.
Ob das bei dir geschehen kann, und du damit leben kannst, weiß ich natürlich nicht.
Nur zur Ergänzung: Der richtige Formatspezifizierer für sprintf wäre %llu, aber da passiert bei den 8-Bittern gar nix, die Ausgabe ist leer. Bei den meisten 32 Bittern sollte es gehen.
Alles klar... dann müsst ihr mir aber nochmal kurz auf die Sprünge helfen...
Wie würde ich die bigToStr() Funktion in meinem Kontext (Laufleistung als mm gespeichert, Darstellung als char[10] via u8g2, ....) denn konkret anwenden?
Das wären 18446744073 tausend Kilometer :o (ok, mit 32 Bit ist bei unter 4300km Schicht - Das wäre wohl schon etwas wenig)
Wenn ich mich nicht verrechnet habe - 6x zur Sonne und zurück - blöd, daß sich da oben die Reifen nicht an die gefahrene Strecke halten