我在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;
}
答案 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