c++ - QByteArray 上的 QDataStream:在 DataStream ('<<') 上的写入之间从数组 ('[ ]') 读取是否安全?
问题描述
我正在使用 aQDataStream
将数据(使用流的<<
运算符)序列化为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
使用 a QBuffer
as QByteArray
is not a QIoDevice
(这让我问了这个问题)。再一次,QDataStream
不提供flush()
(或类似的方法),所以它可能是安全的......?
解决方案
推荐阅读
- php - 如何在 laravel 中输入所有数组并在字段下方显示验证错误
- java - 为什么优化的虚拟调用在热点 jit 程序集中指向相同的地址?
- c++ - 减去整数数组的索引的结果
- mips - 程序一直显示“存储中未对齐的地址:0x100100d2”错误
- django - Django Todo App - 按外键过滤导致 TypeError
- laravel - 在 maatwebsite excel 导出/导入中,我需要插入名称而不是 id
- bash - 在数字列表中添加前导空格?
- drop-down-menu - 如何从按钮移动下拉菜单框的位置?
- gitlab - 即使组在重新配置期间拥有该文件夹,Gitlab 也没有启动并尝试执行 chgrp 命令
- gcc - 找不到 -ll collect2:错误:ld 返回 1 退出状态