将 QByteArray 附加到 QDataStream?

2024-01-09

我必须填充一个QByteArray具有不同的数据。所以我正在使用QDataStream.

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);

qint8 dataHex= 0x04;
qint8 dataChar = 'V';

stream << dataHex<< dataChar;
qDebug() << buffer.toHex();  // "0456"  This is what I want

但是,我还想将 QByteArray 附加到buffer.

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);

qint8 dataHex= 0x04;
qint8 dataChar = 'V';
QByteArray moreData = QByteArray::fromHex("ff");

stream << dataHex<< dataChar << moreData.data(); // char * QByteArray::data ()
qDebug() << buffer.toHex();  // "045600000002ff00"  I would like "0456ff"

我缺少什么?


when a char*附加它假设\0终止并序列化writeBytes它还首先写出大小(作为 uint32)

writeBytes' doc: http://qt-project.org/doc/qt-5/qdatastream.html#writeBytes

将长度说明符 len 和缓冲区 s 写入流并 返回对流的引用。

len 被序列化为 quint32,后跟 s 中的 len 个字节。笔记 数据未编码。

您可以使用writeRawData规避它:

stream << dataHex<< dataChar;
stream.writeRawData(moreData.data(), moreDate.size());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 QByteArray 附加到 QDataStream? 的相关文章

随机推荐