需要使用.data
- 使用QByteArray的时候,强转,没有’\0’,所以要指定长度:
QByteArray msg3((char*)(&xiaoming), sizeof(xiaoming));
- QByteArray的时候用.data()访问数据呀!!!并且.data()返回的是指针
#include <QtCore/QCoreApplication>
#include <QDebug>
#pragma(push)
#pragma(1)
struct head {
double one;
int two;
};
#pragma(pop)
#pragma(push)
#pragma(1)
struct body {
double three;
int four;
};
#pragma(pop)
#pragma(push)
#pragma(1)
struct all {
head head;
body body[3];
};
#pragma(pop)
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
head head0 = { 22, 22 };
body body0 = { 33, 34 };
body body1 = { 44, 45 };
body body2 = { 55, 56 };
all xiaoming = { head0, body0, body1, body2 };
QByteArray msg3((char*)(&xiaoming), sizeof(xiaoming));
qDebug() << *((double*)msg3.data());//检查发送端
head *h3 = (head*)msg3.data();
qDebug() << h3->one;//接收端
return a.exec();
}