Servus! Ich habe folgendes Problem: ich habe einen 64 Bit Timestamp, den ich in einen 32 Bit Timestamp umwandeln möchte. Der 64 Bit ist in Millisekunden und der 32 Bit ist in Sekunden. Eigentlich ne einfache aufgabe, jedoch bin ich auf nem 8051 unterwegs und kann daher keinn 64 bit verarbeiten! Wie kann ich trotzdem den timestamp umwandeln (also durch 1000 teilen)? Vielen Dank für eure Hilfe!
Gast
#2841322
Du kannst duch 1024 teilen, durch 1000 teilen wird aufwendig.
Gast
#2841330
Stephan S. schrieb: > Eigentlich ne einfache aufgabe Eben, der Wertebereich der ganzen Sekunden im 64-Bit Timestamp passt nämlich nicht in 32-Bit, egal, wie du das auch berechnest. Oliver
Gast
#2841332
No schrieb: > Du kannst duch 1024 teilen, durch 1000 teilen wird aufwendig. Na ja wenn das ein Zeitstempel ist der seit dem 1.1.1970 läuft, dann ist der Fehler bei gut 42 Jahren grob geschätzt 1 Jahr. Keine Ahnung ob der Zeitstempel ein Jahr falsch gehen darf. Man kann auch mit 8 Bit eine 64 Bit Division machen. Dazu dürfte es Codebeispiele im Netz geben. Funktioniert im Prinzip wie eine Rechnung auf Papier. Ist halt etwas aufwändiger.
Gast
#2841336
Oliver schrieb: > Eben, der Wertebereich der ganzen Sekunden im 64-Bit Timestamp passt > nämlich nicht in 32-Bit Hmm, vom 1.1.1970 sind bis jetzt etwa 1,3x Milliaren Sekunden vergangen wenn ich mich nicht verrechnet habe. Sollte also noch passen. Kommt halt auch auf den Zeitstempel an.
der Timer läuft seit Epoch, das hatte ichv ergessen zu sagen... Aber habe ich eine Lösung gefunden, basieren auf nem look-up table. damit habe ich jetzt einen Fehler von ca. 2 sekunden, aber der reicht aus. Danke für eure Anregungen!
Gast
#2841608
Stephan S. schrieb: > der Timer läuft seit Epoch ?? Stephan S. schrieb: > Aber habe ich eine Lösung gefunden, basieren auf nem look-up table. Dann lass die die du gefragt hast auch an deiner Lösung teilhaben.
Gast
#2843249
UR-Schmitt schrieb: > Stephan S. schrieb: >> der Timer läuft seit Epoch ?? http://de.wikipedia.org/wiki/Epoch
Warum nicht einfach Division, wie man sie in Assembler macht: 64 mal links schieben, testen, abziehen und fertig. Die 64 Bit übergibt man als 2 * 32Bit:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Man kann da noch optimieren, z.B. die obersten 2 Byte gleich wegschmeißen. Peter
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.