2

私はプロジェクトに取り組んでおり、文字列 (QString) をバイナリとして書き込む (そして将来的には読み取る) 必要があります。文字列は、「00010203040506070a0f01」などのように HEX 形式です。

YouTube のチュートリアルでここまでたどり着きました。

void Output()
{
    QString ye("01020a");
    QFile file("C:\\Users\\Public\\Documents\\Qt_Projects\\myfile.dat";

    if(!file.open(QIODevice::WriteOnly))
    {
        qDebug() << "Could not open file to be written";
        return;
    }

    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_5_0);

    out << ye;

    file.flush();
    file.close();
   }

しかし、16 進エディタで "myfile.dat" を開くと、16 進値が異なり、QString "ye" がテキスト側に書き込まれます。

00 00 00 0C 00 30 00 31 00 30 00 32 00 30 00 61

ヘルプ?

4

3 に答える 3

0

QString を QFile に保存します。

QString qStr="abc";
qFile.write(qStr.toUtf8().constData());

conversion sequences are here;
   QString => QByteArray => const char* => QFile.write()

【refクラス機能】

QByteArray QString::toUtf8() const;
const char * QByteArray::constData() const;
qint64 QIODevice::write(const char * data);
于 2016-03-09T02:17:44.273 に答える