Je suis en train de programmer un outil dans Qt dans lequel je veux écrire des données binaires dans un fichier. Tout fonctionne bien sauf lorsque j'essaie d'écrire la valeur décimale '10' (0000 1010 en binaire) dans le fichier. dans ce cas, je reçois un octet supplémentaire avec la valeur '0000 1101' devant l'autre octet. Peu importe combien de données j'écris dans le fichier, dès que j'écris un 10, je reçois un autre octet.écrire 00001010 à Qfile ajoute un autre octet à l'avant
je me suis cassé vers le bas le code suivant:
#include <QCoreApplication>
#include <QFile>
#include <iostream>
#include <QString>
#include <QDataStream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString SavePath;
SavePath = qApp->applicationDirPath();
SavePath.append("/test.bin");
QFile file(SavePath.toLocal8Bit().constData());
if (file.exists())
file.remove();
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
std::cout << "Kann Datei zum Speichern der TP-Daten nicht erstellen." << std::endl;
std::cout << SavePath.toLocal8Bit().constData() << std::endl;
return -1;
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_3);
out.setByteOrder(QDataStream::LittleEndian);
out << qint32(10);
int test=10;
out.writeRawData((char*)&test,4);
file.write((char*)&test);
return 1;
}
La sortie dans mon fichier est:
0d 0a 00 00 00 0d 0a 00 00 00 0d 0a
les trois octets 0x0D sont indésirables. Je ne les obtiens pas en écrivant un '9' ou un '11' dans le fichier. Je manque d'idées. Quelqu'un peut-il me dire ce que je fais mal?
La surcharge ['QFile :: write'] (http://doc.qt.io/qt-5/qiodevice.html#write-1) que vous appelez attend un tableau de caractères à terminaison nulle. Votre code affichera un comportement indéfini. –
Merci pour votre réponse! –