Binärdatei auslesen mit C

Diskutiere mit über: Binärdatei auslesen mit C im Mac OS X Entwickler, Programmierer Forum

  1. rollohusa

    rollohusa Thread Starter MacUser Mitglied

    Beiträge:
    92
    Zustimmungen:
    0
    Registriert seit:
    15.08.2005
    Hi,
    ich hab da mal wieder ein kleines Problem.
    Ich soll fürs Studium eines kleines Prog in C schreiben, dass aus einer Datei die Daten, die als Binärdaten gespeichert wurden, auslesen und ausgeben.

    Leider funktioniert das irgendwie nicht auf meinem iBook. Also hab ich es auf dem PC geschrieben. Wieso klappt der gleiche Programmcode nicht auf dem MAC????

    Kann mir da einer helfen?

    PS: Ich hab die Dateien mal angehängt!
     

    Anhänge:

  2. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.774
    Zustimmungen:
    3.629
    Registriert seit:
    23.11.2004
    lass doch mal den debugger laufen ;)
    anscheinend liegt es daran, dass dein fread von n irgendwas komisches liefert und damit quasi in fast-endlos-schleife gerät...

    so liest man auch keine dateien aus, das tut man normalerweise nur while !=EOF
     
  3. worf

    worf MacUser Mitglied

    Beiträge:
    848
    Zustimmungen:
    13
    Registriert seit:
    06.01.2005
    hmm lang lang ist es her das ich selber programmiert habe ;-)

    Könnte sein das es mit der Art Zu Tun hat wie die Daten auf den verschiedenen
    System gehalten werden.

    Stichwort little oder big endian.

    LG Worf
     
  4. Pingu

    Pingu MacUser Mitglied

    Beiträge:
    4.894
    Zustimmungen:
    341
    Registriert seit:
    04.08.2003
    Jep, worf gab das Stichwort.

    Es dürfte am Endian liegen. Denn wenn ich bedenke, daß ein int ein 16-bit Wert ist, dann lese ich folgendes als Schleifenzähler (erster Wert) aus der Datendatei:
    Code:
    Data  Intel        Motorola
    0a00  00a0 -> 10   0a00 -> 2560

    Pingu
     
    Zuletzt bearbeitet: 07.11.2005
  5. vava

    vava Gast

    Es liegt definitiv daran dass die Datei daten.dat auf einem x86 System erstellt wurde in LitlleEndian Byte Reihenfolge. Auf deinem iBook werden Bytes in BigEndian Reihenfolge verarbeitet.

    z.B entspricht der erste Eintrag in daten.dat
    Code:
    0x0A 0x00 0x00 0x00 
    (die Zahl der Einträge in der Datei) auf dem PC = 10 Einträge auf dem MAC aber 167772160 Einträge.

    BigEndian LittleEndian info: http://de.wikipedia.org/wiki/Byte-Reihenfolge

    Um das Programm auf den MAC zu portieren musst du die Bytes nach dem lesen tauschen also
    Code:
    0x0A 0x00 0x00 0x00 bzw z.B 0x12 0x34 0x56 0x78
    
    
    muss zu
    Code:
    0x00 0x00 0x00 0x0A bzw 0x78 0x56 0x34 0x12
    werden
     
  6. vava

    vava Gast

    Vorsicht! er wird vermutlich auf einer 32 bit Architektur arbeiten also ist int ohne qualifizierer = long int also 32 bit.
     
    Zuletzt von einem Moderator bearbeitet: 07.11.2005
  7. rollohusa

    rollohusa Thread Starter MacUser Mitglied

    Beiträge:
    92
    Zustimmungen:
    0
    Registriert seit:
    15.08.2005
    Und wie machen ich das in C?
     
  8. worf

    worf MacUser Mitglied

    Beiträge:
    848
    Zustimmungen:
    13
    Registriert seit:
    06.01.2005
    sage mal was und wo studierst du denn ?
    sind das eure ersten Schritte in C?

    Habt ihr die Grundlagen noch nicht durch?
    Da ich eher aus der Pascal Delphi Ecke komme kann ich dir leider nicht sagen wie man das in C macht.

    LG worf
     
  9. worf

    worf MacUser Mitglied

    Beiträge:
    848
    Zustimmungen:
    13
    Registriert seit:
    06.01.2005
    Hi@all,

    habe mal ein Wenig Zeit gefunden und habe das Prog so umgestrickt
    das es wahlweise für MAC oder PC kompiliert werden kann.

    Googeln nach "c convert endian" brachte die Lösung

    LG worf
     

    Anhänge:

    • daten.zip
      Dateigröße:
      12,9 KB
      Aufrufe:
      24
Die Seite wird geladen...
Ähnliche Themen - Binärdatei auslesen Forum Datum
Vollständigen Namen per Terminal auslesen? Mac OS X Entwickler, Programmierer 21.10.2011
applescript - joystick auslesen Mac OS X Entwickler, Programmierer 22.09.2011
Von html-Code Elemente auslesen Mac OS X Entwickler, Programmierer 25.08.2011
Quelltext aus WebView auslesen (iOS) Mac OS X Entwickler, Programmierer 09.08.2011
Hardwareerkennung und Auslesen einer Seriennummer Mac OS X Entwickler, Programmierer 13.06.2011

Diese Seite empfehlen

Benutzerdefinierte Suche