如何解决将 QByteArray 转换为 quint32 的向量
我正在从二进制文件中读取 QByteArray
,需要将其转换为 QVector<quint32>
。我尝试了以下代码:
QVector<quint32> qByteArrayToQuint32Vector(const QByteArray bytes,QDataStream::ByteOrder byteOrder) {
QByteArray temp;
QVector<quint32> convertedData;
QDataStream stream(&temp,QIODevice::ReadWrite);
for (int i = 0; i < bytes.length(); i++) {
stream << bytes[i];
}
stream.setByteOrder(byteOrder);
quint32 t = 0;
for (int i = 0; i < bytes.length(); i += 4) {
stream >> t;
convertedData.push_back(t);
}
return convertedData;
}
它不起作用,转换后的数据只是零。
解决方法
看来我误解了 QDataStream
的用法。工作解决方案如下:
QVector<quint32> qByteArrayToQuint32Vector(const QByteArray bytes,QDataStream::ByteOrder byteOrder) {
int byteArraySize = bytes.length();
int vectorLen = byteArraySize/4;
QVector<quint32> convertedData;
convertedData.resize(vectorLen);
QDataStream in(bytes);
in.setByteOrder(byteOrder);
for (int i = 0; i < vectorLen; i++) {
in >> convertedData[i];
}
return convertedData;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。