QBufferのドキュメントには次のように書かれています:
QBuffer クラスは、QByteArray の QIODevice インターフェイスを提供します。
つまり、QByteArray
下だけです。一方、 aQByteArray
は移植可能です。なぜなら、データをバイトの配列として見て、一度に 1 バイトずつ書き込めば問題ないからです。あなたのコードは動作します:
あなたが言う時
このファイルを他のOSで読み取れるようにしたい
あなたのファイルはあなたのプログラムによってのみ使用されますか、それともシステム内の他のアプリケーションによって使用されますか? QDataStream
にはより優れた機能が用意されてI\O
おり、引き続きそれを利用できる可能性があります。
プラットフォーム固有になります。x
メモリ内の表現はエンディアンに依存します。 では発生しませんが、QBuffer
実行すると:
b.write((char*)&x, sizeof(x));
エンディアンが異なるマシンを使用している場合は、次のようにして、結果の配列の異なる値を取得します。
char* data = &x;
qDebug()<< data[0];
qDebug()<< data[1];
qDebug()<< data[2];
qDebug()<< data[3];
QDataStream オペレーターのソースコードを見てみましょう
QDataStream &QDataStream::operator<<(qint32 i){
CHECK_STREAM_WRITE_PRECOND(*this)
if (!noswap) {
i = qbswap(i);
}
if (dev->write((char *)&i, sizeof(qint32)) != sizeof(qint32))
q_status = WriteFailed;
return *this;
}