Schreiben von binären Dateien in QT und Lesen Sie in matlab

Versuchen zu tun, die einfachste Sache überhaupt. Schreiben Sie eine Zahl in QT im Binär-Modus (unsigned 16) und Lesen Sie die Datei in matlab. Ich verwende Append-Modus, da ich werden das hinzufügen von zahlen, um die Datei in der Zukunft, Aber kann nicht scheinen, um dieses Recht zu.

Dies ist die QT-code:

QFile f("C:\\temp.dat");
f.open(QIODevice::WriteOnly | QIODevice::Append)
QDataStream out(&f);
out<<quint16(270);
f.close();

- Und dies ist der Matlab-code:

fid = fopen('C:\\temp.dat');
F_nums = fread(fid,1,'*uint16');
fclose(fid);

Scheint sehr einfach, aber es liest die zahlen falsch...

Danke!

  • Falsch ist ein bisschen vage. Haben Sie schaute auf die Datei mit einem hex-editor? Stellen Sie zunächst sicher, dass die richtigen Werte in der Datei gespeichert werden. Wenn dies funktioniert, starten Sie das Debuggen von Matlab code.
  • Ausgabe: 3585, anstelle von: 270
  • Dies ist nicht hilfreich, was die Ausgabe ist, dass die Ausgänge? Wieder, überprüfen Sie die Dateien zuerst den Inhalt...
  • Bytes sind vertauscht. 3585=0xE01, 270=0x10E
  • Die Inhalte der Dateien korrekt sind, für die Anzahl von bis zu 255. Danach ist es Ihnen zeigen, zu Unrecht. Roku, du hast Recht! Danke! Keine Ahnung warum QT macht das schon?
  • QDataStream Standard-byte-Reihenfolge, nur ist big-endian. Sie können es ändern, indem setByteOrder()

InformationsquelleAutor BioSP | 2012-06-20
Schreibe einen Kommentar