Hallo da es mir winavr nicht möglich ist 64Bit Zahlen via RS232 aus zu geben, habe ich mir versucht eine eigene Funktion zu schreiben, nur leider bin ich am verzweifel weil ich sie einfach nicht richtig zum laufen bekomme... vellt kann ja einer mal drüber schauen:) void printLongLong(uint64_t value) { printfHex64(value); uint16_t digits = 0; uint64_t valueCopy = value; while (valueCopy > 0) { valueCopy = valueCopy / (uint64_t)10; digits++; } valueCopy = value; // eight digits can be casted in 32bit while (digits > 9) { uint64_t difference = pow((double)10, (double)(digits - 1)); uint8_t currentDigit = valueCopy / difference; valueCopy = valueCopy - (difference * (uint64_t)currentDigit); digits--; printf("%c", currentDigit); } } Vielen Dank Dominik
Also mit Rs232 ist falsch ich meine natürlich mit der printf Funktion ;)
Doch, die Suchfunktion! Die findet z.B. Beitrag "uint64_t nach char[]" Z.B. kannst du dort mit meiner uint64toa() in einen String konvertieren, und dann den ausgeben.
Man sollte sich wirklich mal die Muehe nehmen und ein Byte nach Hex umwandeln. Das sind einige wenige Zeilen. Dann ein 64bit ... ist 8 mal ein Byte.
Dann hat man vielleicht eine Hexadezimaldarstellung im besten Fall. Und wie kommt man von da nach dezimal - falls das gewünscht ist?
Wenn ich mit die Codezeilen oben angucke, sieht es eher so aus, als wollte Dominik die Zahl nicht als Hex ausgeben sondern dezimal.
ach ja, da war noch eine Ausgangsfrage... - Man bekommt di egwünschte Ziffernfolge, indem man fortgesetzt die Zahl modulo 10 rechnet (gibt die letzte Ziffer) und dann nochmal die Zahl nimmt und durch 10 teilt; damit fängt dann wieder an mit modulo etc. - Wenn man dadurch die Ziffern in der falschen Reiehnfolge hat, muß man halt drehen. Würde man vorher wissen, wieviele Stellen man bekommt, könnte man gleich in der richtigen Reiehenfolge ablegen. - mit pow() rechnen, ist hier nicht sehr sinnvoll. pow() ist eine Gleitkommafunktion, die erstens sehr langsam ist für AVR-Verhältnisse, und zweitens die Gleitkommalib benötigt, und drittens dem armen Programmierer mit Rundungsfehlern das Leben schwer macht. - "einfach nicht richtig zum laufen bekomme" ist keine besonders genau Aussage :-)
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.