2014-07-16 12 views
0

에서 구조를 가져 오는 방법을 내가 리눅스는 QByteArray

에 C++ Qt는 프로그램에서 C# 및 기타의 TCP 통신 응용 프로그램을하지만 통신 후 난 C++ QByteArray에서 C# 응용 프로그램에서 데이터를 얻을. 지금 QByteArray를 다시 struct로 변환해야합니다.

QT의 my_struct에서 데이터를 가져 오는 방법은 무엇입니까? 내가 사용하고

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

또는

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

QDataStream는 자신의 직렬화/역 직렬화 형식을 사용합니다. QDataStream을 사용하여 데이터가 직렬화되지 않은 것처럼 보입니다. 이 문제를 해결하기 위해 json/xml/등으로 데이터를 보낼 수 있습니다.

+1

정확하지 않습니다. 'QDataStream'은 복잡한 Qt 데이터 유형을 위해 자체의 간단한 형식을 사용합니다. 숫자 형과 같은 단순한 유형의 경우, 실제로는 그다지 중요하지 않습니다. 엔디안을 선택하고 갈 수 있습니다. –

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