Hey zusammen, ich habe eine gespeichterte Datei mit Messdaten (Zahlen) aus einem unbekannten Programm. Die Daten sehen im Hexdezimalformat so aus: XX XX 00 20 XX XX 00 20 XX XX 00 20 ... (für XX stehen jeweils beliebige unterschiedliche Werte) Ich bin mir nicht sicher, ob das "00 20" eine Art Trennzeichen und das "XX XX" ein integer ist, oder vielleicht nur das "20" ein Trennzeichen, und die "00" gehört zur Zahl, oder ist der komplette Block aus "XX XX 00 20" vielleicht ein Float (Single?) oder long Integer? Ich meine mich erinnern zu können, dass normalerweise die Daten rückwärts gespeichert werden, d.h. "1000" wird als "E8 03" gespeichert, stimmt das? Könnte mir jemand einen Tip geben um welchen Datentyp es sich hier handeln könnte? Liebe Grüße, Max
Binärer schrieb: > ich habe eine gespeichterte Datei mit Messdaten (Zahlen) aus einem > unbekannten Programm. Die Daten sehen im Hexdezimalformat so aus: > XX XX 00 20 XX XX 00 20 XX XX 00 20 ... (für XX stehen jeweils beliebige > unterschiedliche Werte) > Ich bin mir nicht sicher, ob das "00 20" eine Art Trennzeichen und das > "XX XX" ein integer ist, wer weiss das schon. > oder vielleicht nur das "20" ein Trennzeichen, möglich, aber eher unwahrscheinlich. Zumal sich die Frage erhebt, wozu man in einem Binärfile überhaupt ein Trennzeichen braucht. Schliesslich kennt man ja den Aufbau und weiß, welches Byte was darstellt. > und die "00" gehört zur Zahl, oder ist der komplette Block aus "XX XX 00 > 20" vielleicht ein Float (Single?) oder long Integer? auch möglich. > Ich meine mich erinnern zu können, dass normalerweise die Daten > rückwärts gespeichert werden, d.h. "1000" wird als "E8 03" gespeichert, > stimmt das? Nein. Das hängt von mehreren Faktoren ab. Meistens spiegelt sich in der Reihenfolge wieder, wie der CPU Typ die Dinge intern handhabt. Aber als generelle Regel, dass immer rückwärts gespeichert wird, kann man das so nicht sagen. > Könnte mir jemand einen Tip geben um welchen Datentyp es sich hier > handeln könnte? Wenn es ein Binärfile ist, dann kann man so überhaupt nichts darüber aussagen. Am ehesten kommt man noch weiter, wenn man die Dateiendung als Suchhilfe benutzt bzw. weiß was die Daten eigentlich darstellen sollen. Ansonsten heißt es nur: reverse Engeneering und mit Papier und Bleistift und Raten möglichst viele Files analysieren und nach Zusammenhängen suchen. Wenn man jedoch auch nicht weiß, was da eigentlich gespeichert ist, dann ist das schwierig. Vergleichbar mit der ENtschlüsselung der Hieroglyphen ohne den Rosetta-Stein. Es könnte einfach alles bedeuten.
:
Bearbeitet durch User
Vielen Dank schonmal für die Hilfe! Ich hatte gehofft, dass dies möglicherweise eine Standard-Form ist, in der beispielsweise C Daten aus einem Array per printf oder so speichert. Schade ;)
Binärer schrieb: > Ich meine mich erinnern zu können, dass normalerweise die Daten > rückwärts gespeichert werden, d.h. "1000" wird als "E8 03" gespeichert, > stimmt das? du meinst die byte reihenfolge ("endianess"). wenn du einen 2byte integer hast, so liegt die zahl im speicher verkehrt herum - zumindest bei little endian wie dem altbekannten x86. wenn du nun binär die bytes einfach in eine datei schreibst, so hast du auch dort die verkehrte reihenfolge. du kannst aber auch genau darauf achten und schauen, dass du die bytes in big endian form in die datei speicherst. wenn du kompatibel zu verschiedenen architekturen sein möchtest, musst du zumindest spezifizieren, wie du die daten speicherst.
Sind die Daten Zeilenweise oder Endlos organisiert? Natürlich ist es möglich, dass 00 20 eine Art Synchron- oder Trennzeichen ist. Das würde aber bedeuten, dass die Kombination 00 20 als Messdaten ausgeschlossen ist. Normalerweise gibt es zwei Arten Daten zu speichern. Big endian oder little endian - falls Du mal googlen willst. Werden große Zahlen z.B. long in einer Datei gespeichert, so kann es vorkommen, dass über einen längeren Zeitraum, wenn sich nur die 2 unteren Bytes ändern, solche, scheinbar Konstanten, Muster entstehen.
gib mal ein paar beispiele für deine XX ist es wirklich ein binärfile? 0x20 ist ein Leerzeichen und würde sich als Trennzeichen eine Textformates anbieten. Hast du irgendwelche Informationen über die Daten? was wurde gemessen? welcher Wertebereich kann angenommen werden? kennst du vielleicht sogar das Tool, wo die rauskommen?
Wie andere bereits geschrieben habe: Ohne mehr Daten lässt sich daraus nichts ableiten. Bei Big Endian könnte es sich bei 00 20 um einen kleinen Offset handeln - geringe Gleichspannung, um mal ein willkürliches Beispiel zu nennen - und der sich ändernde Anteil 32 + x betragen. Wenn es wirklich immer 00 20 ist, wäre der Offset dann (innerhalb der Auflösung) allerdings konstant ... Die 00 20 könnten auch Flags oder einen Messkanal oder beides darstellen. Flags = 20, Kanal = 00, Messwert = XX XX. Oder ein willkürliches Trennzeichen oder die Schuhgröße der Schwester des Entwicklers oder ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.