Hallo,
ich hab eine kleine Binärdatei in der sind kodierte zahlen drinnen
Umrechnung der Koordinaten:
- Die Zahl muss gedreht werden (da Little Endian) 00 00 05 00 --> 00 05 00 00
- Aufteilung in Zahl und Mantisse, z. B: Zahl: 00 05 Mantisse: 00 00
- einzelnes Ausrechnen der Zahl und der Mantisse
Besonderheiten Mantisse:
Von Dezimal nach Hexadezimal
Bei der Zahl 0,632 sitzt die 6 auf der Zehntelstelle, die 3 auf der Hunderstelstelle und die 2 auf der Tausendstelstelle. Ein Zehntel ist 10-1, ein Hundertstel 10-2 usw.
Das wäre Dann 0,A1CA oder im format CA A1 00 00
und Umgekehrt:
Arbeite die Ziffern nach dem Komma von rechts nach links ab.
Multipliziere die Ziffern mit wachsenden Potenzen der Basis, angefangen mit
16° = 1, und summiere die Produkte:
Code:
10 • 1 = 10
12 • 16 = 192
1 • 256 = 256
10 • 4096 = 40960
——————
41418
Teile dann diese Summe durch die nächste Potenz der Basis 16:
41418 : 65536 = 0,631988525390625
und addiere den bereits ermittelten ganzzahligen Anteil 0:
Code:
0,631988525390625
+ 0
——————————————————
0,631988525390625
Negative Koordinaten:
Die Negativen Daten liegen codiert vor. Sie beginnen jeweils mit einen F oder im Binärsystem ist die höchstmögliche Stelle eine 1.
Von der Zahl wird FF FF FF FF abgezogen,
Wenn z. B. die Zahl
4076C5FF vorliegt dann wird Little Endian angewendet FF C5 76 40
wir ziehen von der Zahl nun FFFF FFFF ab
Code:
FF FF FF FF
- FF C5 76 40
00 3A 89 BF
Die Zahl 3A, 89 BF wird nun umgewandelt.
Das ergibt dann.
58,538070678710937
Da es aber eine Minuszahl ist muss noch x -1 genommen werden
Aufgerundet sieht das Ergebnis dann so aus:
-58,538
Hier ist ein Ausschnitt der Datei:
Code:
3A000000C22E68023711570255384602298A3502965624021B7D0F024C66FA01C6AFE801AEFFD80129A3CA0149D6B901601CA8011DDB99011D9B8C0115FF7E018CD67601C8E76D01039F6501D53F5B017C5D530161814A
Das erste DWORD sagt mir, wie viele Koordinaten drinnen stehen (Multiplizieren mal 3, da es 3 koordinaten für einen Punkt gibt)
Nur wie programmiere ich jetzt das umrechnen von diesen korrdinaten?
Den Rechenweg hab ich ja bereits beschrieben
Ich hoffe Ihr könnt mir beim Algorithmsu helfen
Gruß
Sebastian