1

一連のバイトをに書き込みたいQDataStream。16 進エディタで表示すると、結果のファイルは次のようになります。

0x DEAD

私の試みは次のようになります。

QFile file("test.txt");
file.open(QIODevice::WriteOnly);
QDataStream stream(&file);
stream << ((char)0xDE);
stream << ((char)0xAD);
file.close();

16 進エディタで開くtest.txtと、これらを 1 バイトとして書き込むのではなく、DataStream が左パディングして完全な単語にし、ファイルが次のようになっていることがわかります。

0x FFFF FFDE FFFF FFAD

これを行う正しい方法は何ですか?

4

1 に答える 1

7

QIODevice の左シフト演算子 ( <<) には、プリミティブのオーバーロードされた定義がないcharため、 にキャストされますint

タイプの定義がありqint8ます。コードを次のように変更すると、出力が修正されます。

stream << ((qint8) 0xDE);
stream << ((qint8) 0xAD);
于 2013-08-01T02:01:56.543 に答える