Hallo,
ich möchte ein bestimmtes Dateiformat auslesen, zu dem die Formatspezifikation vorliegt. In der Spezifikation könnte z.B. ein Schema stehen wie dieses:
- DWORD (32-Bit) id
- WORD (16-Bit) foo
- WORD (16-Bit) bar
- bar-mal UBYTE data
Jetzt überlege ich, wie ich diese unterschiedlich langen Ganzzahlen am elegantesten eingelesen und in ihre Java-Datentyp-Entsprechungen hineinbekomme. Der letzte Part, das Byte-"Array", ist ja relativ einfach und direkt hinzubekommen, aber wie lese ich am besten einen Integer- oder einen Short-Wert aus der Datei binär ein? (Mit "binär" meine ich: Es stehen tatsächlich 2 oder 4 Byte in der Datei und nicht irgendwie als Text "-421337".)
Ich könnte natürlich ein entsprechend langes Byte-Array einlesen und dann mit Bitschieberei und -manipulationen daraus "von Hand" Integer oder so "basteln", aber geht das nicht vielleicht eleganter und kürzer? Oder muss man hier das Rad tatsächlich neu erfinden? :-/
Noch ein Problem eventuell?? -> Die mehrbytigen Ganzzahlen liegen als Little-Endian-Werte vor. :-?
Wie würdet ihr vorgehen?
Viele Grüße und danke euch schon im Voraus!
Hank Scorpio
ich möchte ein bestimmtes Dateiformat auslesen, zu dem die Formatspezifikation vorliegt. In der Spezifikation könnte z.B. ein Schema stehen wie dieses:
- DWORD (32-Bit) id
- WORD (16-Bit) foo
- WORD (16-Bit) bar
- bar-mal UBYTE data
Jetzt überlege ich, wie ich diese unterschiedlich langen Ganzzahlen am elegantesten eingelesen und in ihre Java-Datentyp-Entsprechungen hineinbekomme. Der letzte Part, das Byte-"Array", ist ja relativ einfach und direkt hinzubekommen, aber wie lese ich am besten einen Integer- oder einen Short-Wert aus der Datei binär ein? (Mit "binär" meine ich: Es stehen tatsächlich 2 oder 4 Byte in der Datei und nicht irgendwie als Text "-421337".)
Ich könnte natürlich ein entsprechend langes Byte-Array einlesen und dann mit Bitschieberei und -manipulationen daraus "von Hand" Integer oder so "basteln", aber geht das nicht vielleicht eleganter und kürzer? Oder muss man hier das Rad tatsächlich neu erfinden? :-/
Noch ein Problem eventuell?? -> Die mehrbytigen Ganzzahlen liegen als Little-Endian-Werte vor. :-?
Wie würdet ihr vorgehen?
Viele Grüße und danke euch schon im Voraus!
Hank Scorpio