【发布时间】:2021-03-16 19:51:48
【问题描述】:
我正在处理 OpenRGB 的自动更新,但最近它(Qt)开始向原始文件添加额外的字节
我正在下载文件
QByteArray OpenRGBUpdateInfoPage::GetPageSourceOrFile(QString link)
{
QEventLoop GetPageSourceOrFile;
QNetworkAccessManager Manager;
QNetworkRequest RequestSourceOrFile((QUrl(link)));
QNetworkReply *Reply = Manager.get(RequestSourceOrFile);
connect(Reply, &QNetworkReply::finished, &GetPageSourceOrFile, &QEventLoop::quit);
GetPageSourceOrFile.exec();
QByteArray ReturnInput = Reply->readAll();
//GetPageSourceOrFile.deleteLater();
return ReturnInput;
}
和
QFile ORGBfile(FileStorageLocation);
ORGBfile.open(QIODevice::WriteOnly);
QDataStream out(&ORGBfile);
out << AppBuffer;
ORGBfile.close();
用于写入文件
由于某种原因,这个问题只发生在 linux 上
https://gitlab.com/herosilas12/OpenRGB/-/tree/auto-update 是仓库
【问题讨论】:
-
额外的 4 个字节是什么?
-
文件是否比
QByteArray大4 个字节,还是QByteArray有4 个额外字节? -
您似乎正在使用
QDataStream将文件内容编码为QByteArray。如果是这种情况,那么您还必须使用QDataStreamdecode。 -
解码什么? QByteArray?如果它以前工作得很好,为什么还要让它工作?
-
AppBuffer是什么?QDataStream不像std::ostream:一般来说,它使用额外的元数据对写入它的数据类型进行编码,这些元数据将在随后解码流时使用。因此,如果您编写QByteArray它可能会以例如类型 ID 和字节大小为前缀。话虽如此,如果你能提供一个更完整的代码示例会更好——最好是minimal reproducible example。
标签: c++ qt https qbytearray