我正在使用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()
(或类似方法),所以这可能是安全的……?