2016-04-13 12 views
0
lesen

Wie lese ich eine Binärdatei mit einem anderen Format der Länge?Binäre Dateien mit unterschiedlichen Byte-Länge innerhalb

zum Beispiel gibt es einen bestimmten Wert nach 3200 Byte Binärdatei, die in 4 Bytes, 2 Bytes, 2 Bytes und 1 Bytes formatiert ist.

ich versuchte

fread(&buffer, 1, 1, file); 

dann contenate die 4 Bytes char in Puffer Variable zu lesen - in ein char - dann konvertiert in Integer aber es funktioniert nicht. Zeige nur, wenn es eine Byte Länge war.

+0

wegen endianess? –

+0

Nein, es ist in Big Endian. – Leon

+0

Was meinst du mit "es funktioniert nicht"? Geben Sie Code und Ausgabe an. –

Antwort

2

Zuerst in die Position suchen Sie lesen möchten:

fseek(file, 3200, SEEK_SET); 

dann die 4 Bytes aus der Datei der ganzen Zahl lesen Sie wollen:

int n; 
fread(&n, 4, 1, file); 

Dies funktioniert, wenn die Endian von Die Datei und Ihr System sind identisch. Andernfalls konvertierst du die Nummer in den Endian deines Systems. Z.B.

// if the file is big endian: 
m = be32toh(n); 
// if the file is little endian: 
m = le32toh(n); 
Verwandte Themen