从QByteArray中转换为双阵列 [英] Convert from QByteArray to array of double
本文介绍了从QByteArray中转换为双阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数组双击
:
QVector<double> Y(count);
我需要把它收拾的QByteArray
通过以太网发送。
所以我做到了。这是不是太硬:
So I did it. It was not too hard:
QByteArray line;
line.clear();
line.append(QByteArray::fromRawData(reinterpret_cast<const char*>(Y.data()),
count*sizeof(double)));
我试图用这个code解压从数据的QByteArray的recv
:
QVector<double> data((line.size())/sizeof(double));
QByteArray dou(sizeof(double),0x0);
for(int i = 0; i<data.count(); i++){
dou = recv.mid(i*sizeof(double),sizeof(double));
data[i] = *reinterpret_cast<const double*>(dou.data());
dou.clear();
}
但我不喜欢它。我想找出优雅的方式从的QByteArray
来解压到 QVector&LT;双&GT;
你能帮助我吗?
But I don’t like it. I want to find out elegant way to unpack from QByteArray
to QVector<double>
Can you help me?
推荐答案
您可以使用和QDataStream
这将连接code在二进制数据的特定的格式。的(更具体地第一项(INT32的数目)和然后每个项目)
you can use a QDataStream
which will encode the data in binary in a specific format. (more specifically first the number of items (int32) and then each item)
QVector
拥有的为流运营商的重载
QByteArray line;
QDataStream stream(&line, QIODevice::WriteOnly);
stream << y;
和阅读:
QVector<double> data;
QDataStream stream(line);
stream >> data;
这篇关于从QByteArray中转换为双阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文