ich habe ein kleines Problem. Ich bekomme über meine Serielle Schnittstelle eine Zahl mit 8Byte.
Das ist ein Beispiel einer Übertragung:
00 00 00 7D 2B D5 A7 60 <- HEX
537606334304 <- DEC
Der "reale" wert wäre 5376,06334304. Also eine Zahl mit 8 Nachkommastellen.
Jetzt kommt mein Problem: Ich bräuchte eigentlich nur die Vorkommastellen - maximal 1-2 Nachkommastellen. Diese Zahl sollte dann auch ohne Probleme in eine INT passen.
Ich habe schon versucht die double / 100000 zu teilen und danach auf INT zu casten. Funktioniert nicht. Direkt auf INT casten geht auch nicht. Er nimmt immer nur die ersten 4 Byte ( 2B D5 A7 60 ).
Der Grund ist, dass ich so eine Große Zahl nirgendwo ausgeben kann. Thingspeak z.B. lässt maximal eine INT zu.
Das Problem ist, dass long long in der Arduino-Referenz gar nicht und sonst wohl auch eher selten beschrieben ist.
Die 8 Byte von der Schnittstelle in die Variable zu drücken überlasse ich Daniel selbst.
Wohl wahr. Da bin auch ich zu kurz gesprungen.
Um die unteren 32 Bit komplett loszuwerden, müsste man schon durch 4294967296LL // 0x100000000
teilen, was deutlich mehr ist als die 8 Nachkommastellen.
Noch eine Frage zu deiner Schreibweise: du hast davor 0x und hinten LL. Genauso bei der Zahl durch die du teilst. Was hat es damit auf sich? Muss ich meine u_int64_t auch damit am Anfang und am Ende befüllen? oder wird das automatisch angehängt?
Wie kommen denn die 8 Byte auf Deinem Sendesystem zu Stande?
Gemeint ist nicht die eine Zeile mit den Shift der 8 Byte, sondern die Quelle dieser 8 Byte als Code.