binary und float ?



  • Hallo
    Ich habe folgendes Problem.
    Ich versuche eine binär Datei zu lesen. Nun ist ein Teil davon folgendermaßen aufgebaut.

    xx xx xx xx // char -> Name
    xx xx xx xx // DWORD -> gesamte Größe
    xx xx xx xx // DWORD -> Member Anzahl
    xx xx xx xx // DWORD -> Member Größe (08)
    

    Soweit so gut, kein Problem und M.Anzahl * M.Größe ergibt auch G.Größe (nächstes Sprungziel)
    nun das Problem:
    1 Member ist von der Größe her 8, ABER das soll nun 3 float Zahlen ergeben ?? 😕 1 float ist 4 und 3*4=12 und nicht 8.
    kennt sich da jemand aus ? wird das irgendwie verkürzt ? oder kann man Gleitkommazahlen noch anders darstellen ?
    hier mal ein Beispiel:

    05 00 D6 FF 2F 00 00 00
    

    ergibt:

    -0.164063 0.183594 0.019531
    

    kann ich so nicht nachvollziehen, stimmt aber, bin da etwas ratlos 😕

    Danke



  • Hallo

    Das ein float 4 Byte hat ist korrekt. Wie aus 8 Byte 3 unabhängige floats gelesen werden sollen ist mir unklar. Hast du das Format selber konzeptioniert? Hast du Quellcode für das Ein- oder Auslesen?

    bis bald
    akari



  • akari schrieb:

    Wie aus 8 Byte 3 unabhängige floats gelesen werden sollen ist mir unklar.

    Das ist ja das, was ich auch nicht verstehe. ok 3*2 wäre 6, die anderen 2 könnten reserviert sein, aber aus 2 Byte einen Gleitkommawert ?

    Nein, das Format habe ich nicht selbst konzeptioniert, dann wüßte ich ja wie ich es gemacht habe. Die Daten sind 3D Grafik-Dateien ähnlich wie *.3ds, aber halt von den Leuten für eigene Zwecke selbst konzeptioniert. Ich habe da ein Tool, das diese Dateien in *.obj Dateien konvertiert (ASCII), daher weiß ich was 'rauskommen' muß. Nur ist mir halt schleierhaft wie die das machen, 8 Byte in einen Vector mit 3 Gleitkommawerten. Ich habe es auch schon umgekehrt versucht, d.h. einen bekannten Gleitkommawert in eine Datei geschrieben um zu sehen wie er in Hex 'aussieht' und dann in der Datei gesucht, kein Erfolg. Und nach Komprimierung sieht es ja auch nicht aus. Wie schon gesagt bin ich da etwas ratlos, kann doch nicht sein 🙂



  • DWord hat doch irgendwie 4 Byte?
    3 x DWord sind dann eigentlich 12 Byte???
    + die "putzigen" Chars ...

    Gruss
    Frank



  • DerAltenburger schrieb:

    DWord hat doch irgendwie 4 Byte?
    3 x DWord sind dann eigentlich 12 Byte???
    + die "putzigen" Chars ...
    Gruss
    Frank

    Ich glaube Du verstehst da was falsch.
    Der "Kopf (Header)" ist ok, das letzte DWORD zeigt die Größe der Datenpakete mal das vorletzte DWORD die Anzahl, das stimmt perfekt und kommt exakt zum nächsten Header.
    Nach dem letzten DWORD kommen ja nun die Daten, die jeweils 8 Byte groß sind, ABER diese 8 Byte müssen irgendwie ein Vector mit 3 Gleitkommawerten sein.

    05 00 D6 FF 2F 00 00 00 // muß ergeben: 
    -0.164063 0.183594 0.019531
    


  • Hast du irgendwo eine Erklärung des Formates dieser Datei? Was für ein Format ist das überhaupt?


Anmelden zum Antworten