【发布时间】:2019-05-16 10:05:17
【问题描述】:
我正在使用QDataStream 将数据(使用流的<< 运算符)序列化为QByteArray。但我一直在想:在<< 操作之间从底层QByteArray 读取是否安全(或者我可能会遇到例如缓冲问题)?
quint8 sumBytes(const QByteArray& byteArray)
{
//This will overflow quickly...
quint8 result = 0;
for (int i = 0; i < byteArray.size(); i++)
result += static_cast<quint8>(byteArray[i]);
return result;
}
QByteArrary createByteArray(qint32 foo, qint32 bar)
{
QByteArray array;
QDataStream stream(&array, QIODevice::ReadWrite);
stream<< foo;
stream<< bar;
// Safe to access array below?
const quint8 byteSum = sumBytes(array);
stream<< byteSum;
return array;
}
我检查了 QDataStream 和 QByteArray 的文档,但没有看到任何相关内容,除了提到 QDataStream 使用 QBuffer 因为 QByteArray 不是 QIoDevice (这让我问这个问题)。再一次,QDataStream 没有提供flush()(或类似方法),所以它可能是安全的......?
【问题讨论】:
标签: c++ qt serialization