Hi,
mein chip gibt mir, lt Datenblatt "Latitude Wert (nördlicher Breite:
Sekunden / 256)" heraus.
die bytes sind "74 02 A5 8D"
und mein wert wäre in etwa 48.181230 +-
also rechne ich jetzt 7402A58D in dezimal um =
1946330509 und dann * 256?? Das wären dann 498260610304
Aber wie rechne ich es in Stunden/ Mintuen etc um?
Was da kommt, ist keine Zeit, sondern ein Winkel, also wird das mit den
Stunden eher nix.
Ansonsten hat ein Grad 60 Bogenminuten und eine Bogenminute wiederum 60
Winkelsekunden. Ein Vollkreis hat 360°, also entsprechend 60 x 360 =
21600 Bogenminuten oder 60 x 60 x 360 = 1296000 Winkelsekunden.
Koordinaten werden aber nicht von 0-360° angegeben, sondern von 0-180
entweder "links" (westlich) oder "rechts" (östlich) von Greenwich bzw.
entsprechend nördlich oder südlich vom Äquator.
Markus F. schrieb:> Ansonsten hat ein Grad 60 Bogenminuten und eine Bogenminute wiederum 60> Winkelsekunden. Ein Vollkreis hat 360°, also entsprechend 60 x 360 => 21600 Bogenminuten oder 60 x 60 x 360 = 1296000 Winkelsekunden.
Eben.
Seine Zahl ist viel zu hoch. Da kann man runter rechnen soviel man will,
man landet auf nix vernünftigem.
Daher: Datenblatt. Ich vermute dass schon mal die Bytereihenfolge nicht
stimmt.
Gehe ich davon aus, dass das Highbyte zuerst kommt, dann lautet die Hex
Zahl
02748DA5
Wenn ich das /60 /60 und /256 bearbeite, dann lande ich bei rund 44
Grad. Würde zwar von der Grössenordnung passen, ist aber immer noch weit
daneben.
Daher: Datenblatt wie die Bytefolge zu interpretieren ist.
48.181230 Grad (°) multipliziert mit 60 ergibt den Wert in
Winkelminuten, nochmal multipliziert mit 60 in Winkelsekunden (")
48.181230°*60*60=173452,428"
Umgewandelt in Hex ergibt sicht daraus x0002A58C.
Verglichen mit deinem Ergebnis (x7402A58D) sieht man, dass du das
höchstwertige Byte ignorieren muss (die x74) und den Rest direkt als
Winkelsekunden interpretieren kannst. Um von Winkelsekunden auf Grad zu
kommen musst du durch 3600 dividieren.
Kann auch sein, dass die 74 "umsortiert" werden muss und die
niederwertigsten Stellen bildet. Das lässt sich aus dem Zahlenwert aber
nicht ableiten, das bekommt man nur übers Datenblatt raus
Achim S. schrieb:> 48.181230 Grad (°) multipliziert mit 60 ergibt den Wert in> Winkelminuten, nochmal multipliziert mit 60 in Winkelsekunden (")>> 48.181230°*60*60=173452,428">> Umgewandelt in Hex ergibt sicht daraus x0002A58C.
Nicely done.
> Kann auch sein, dass die 74 "umsortiert" werden muss und die> niederwertigsten Stellen bildet.
Es könnten auch die Kommastellen sein.
0x74 ist circa ungefähr 0x80, also die Hälfte was mit einem Byte möglich
ist.
0.428 (also dein Kommaanteil) ist auch ungefähr 0.5. 0x74 ist ein klein
wenig kleiner als als die Hälfte, 0.428 ebenfalls.
0x74 -> dezimal 116
116 / 256 -> 0.453
könnte hinkommen, wenn man die originale Angabe als geschätzt annimmt.
Basti schrieb:> 48.181230
rechnen wir mal umgekehrt:
48,181 ....Grad mal 60 ergibt die Bogenminuten: 2890,8738, dezimal
nochmals mal 60 die Sache in Bogensekunden 173452,428, dezimal
nochmals mal 256 die Sache in 256stel sekunden: 44403821,57, dezimal
ohne die 57, in hex, ist das 2a 58 c6 d. Das sind also 28 bit
Deine Angabe aber umfasst 32 bit. Also stimmt irgendetwas nicht.
Rechnen wir nochmal, etwas gerundet:
48Grad sind 2880 Minuten, 172800 Sekunden und in hex: 2 A3 00 Sekunden.
Das mal 256: 2 A3 00 00 256stel-Sekunden. Die Stellenzahl dieser
hex-Zahl ist auch 28 bit und nicht 32 wie bei Dir oben.
Also stimmt bei Deiner hex-Zahl irgendetwas nicht.
Walter S. schrieb:> Achim hat das doch schon vor einer halben Stunde gelöst ...
Denk auch dran, dass zwischen Beginn einer Antwort und dem Absenden noch
einige Zeit vergehen kann, besonders, wenn man sich der Rechnung sicher
sein will und zwischendurch auch mal etwas andres tut.
Achims Anwort hab ich beim Absenden nicht gekannt, die trifft wohl den
entscheidenden Punkt: die hex- Zahlen sind in umgekehrter Reihenfolge,
höchstwertige Stelle zuletzt.