我正在做一个项目,我需要编写(并在将来读取)二进制字符串 (QString)。字符串是 HEX 格式,像这样 "00010203040506070a0f01"等...
我通过 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();
}
但是当我用十六进制编辑器打开“myfile.dat”时,十六进制值不同,QString“ye”被写入了事物的文本端。
00 00 00 0C 00 30 00 31 00 30 00 32 00 30 00 61
帮忙吗?
最佳答案
你应该在写之前转换它。
QByteArray array = QByteArray::fromHex(ye.toLatin1());
file.write(array);
你不需要使用QDataStream
因为你已经有了QByteArray
并且可以直接写它。
您可以读取数据并将其转换回十六进制表示形式,如下所示:
QString s = file.readAll().toHex();
关于c++ - (Qt C++) 将 QString 以二进制形式写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602824/