如何从QByteArray获取结构

时间:2014-07-16 15:04:41

标签: c# c++ c qt qtnetwork

我在C#中有一个TCP通信应用程序,在Linux上有C ++ Qt程序中的其他应用程序

但是在通信之后我从C ++ QByteArray中的C#应用​​程序获取数据。  现在QByteArray需要转换回struct

如何在QT中获取my_struct中的数据。 我用过

QDataStream in(&data, QIODevice::ReadOnly);
int parID;
QString parMessage;
in >> parID >>parMessage;

OR

const my_struct* my_struct = reinterpret_cast<const my_struct* >(data.constData());
// display
qDebug() << " id :"<<my_struct->id<< " msg: "<< my_struct->msg;



struct my_struct
{
  int id;
  string msg;
}

2 个答案:

答案 0 :(得分:0)

QDataStream使用自己的序列化/反序列化格式。看起来您的数据不是使用QDataStream序列化的。要解决此问题,您可以在json / xml / etc。

中发送数据

答案 1 :(得分:0)

这取决于它的发送方式。在正确沟通之前,您需要确保双方的格式化。

发送字符串很棘手你最好的选择是发送字符串的长度(作为32位unsinged int)然后发送数据(以utf8格式),当你读到时你可以做

char* s;
int length;
in.readData(s, length);
QString str = QString::fromUtf8(s, length);
delete[] s;//free the allocated buffer