Einzelnen Beitrag anzeigen

Newbie44
(Gast)

n/a Beiträge
 
#1

Hilfe bei Algorithmus

  Alt 30. Aug 2007, 12:59
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
  Mit Zitat antworten Zitat