2009-03-26 11 views
0

Ich habe ein Programm geschrieben, das eine BMP-Datei öffnet und sie als Zeichendatei behandelt und Lauflängencodierung darauf ausführt. Es erzeugt eine gültige komprimierte Kodierungsdatei, die ich erneut lese, um die Dekodierung durchzuführen.Plattformabhängiges Problem bei der Lauflängencodierung von BMP-Dateien mit C

Als ich die Anwendung gemacht hatte, benutzte ich Fedora und es lief völlig in Ordnung. Jetzt starte ich es auf Ubuntu und es funktioniert nicht.

Irgendeine Idee, was ist falsch? Ich befürchte, dass es mit der Kodierung zu tun hat.

+0

Haben Sie versucht, es auf Ubuntu neu kompilieren oder haben Sie nur die Binärdatei über kopieren? – karim79

+0

Ich versuchte beide Möglichkeiten, keiner von ihnen arbeitete .. –

+1

Das sollte etwas trivial sein. Wie standardmäßig signed/unsigned. Warum sollte eine Binärdatei überhaupt als Textdatei behandelt werden? – sharptooth

Antwort

1

Ich würde in erster Linie vorschlagen, einen Quellcode-Debugger zu verwenden, um das Problem zu finden.

Mögliche Ursachen umfassen die Verwendung verschiedener Compiler auf den verschiedenen Systemen, die verschiedene Dinge tun könnten, zum Beispiel Packstrukturen (z. B. BITMAPFILEHEADER). Sie haben möglicherweise auch unterschiedliche CPU-Architekturen auf den beiden Systemen (64- und 32-Bit).

Sie können auch einen Hex-Editor (z. B. XVI32) verwenden, um die Unterschiede zwischen BMP-Dateien zu untersuchen, die von den beiden Versionen Ihres Programms generiert werden.