从QByteArray中转换为双阵列 [英] Convert from QByteArray to array of double

查看:387
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆