Unsolved Convert Union to QByteArray and vice-versa using QUdpSocket in Qt
-
I have one Union like below
#define no_of_bits 240 #define word_size 16 struct bits { unsigned short int bit1:1; unsigned short int bit2:1; unsigned short int bit3:1; unsigned short int bit4:1; unsigned short int bit5:1; unsigned short int bit6:1; unsigned short int bit7:1; unsigned short int bit8:1; unsigned short int bit9:1; unsigned short int bit10:1; unsigned short int bit11:1; unsigned short int bit12:1; unsigned short int bit13:1; unsigned short int bit14:1; unsigned short int bit15:1; unsigned short int bit16:1; }; union myData { unsigned short int data[no_of_bits/word_size]; struct bits word[no_of_bits/word_size]; };
I want to convert
myData
union into aQByteArray
so that I can send it through socket usingQUdpSocket
usingwriteDatagram()
function. So first tell me how can I convert this intoQByteArray
.Next thing is that, On the receiver side how can I convert the
QByteArray
into the this UnionmyData
again.
In short I want to convert this unionmyData
intoQByteArray
so that I can send this over a network usingQUdpSocket
and on the receiver side reconvert this receivedQByteArray
into the Union again. -
@devillIsHeree
At the end of the day, yourstruct
/union
is a bunch of bytes. https://doc.qt.io/qt-5/qbytearray.html#QByteArray-1 and https://doc.qt.io/qt-5/qbytearray.html#constData let you swap betweenQByteArray
andconst char *
. The rest is just casting. I am assuming both sides have same architecture, compilers etc.; if not, that is a separate matter, but you don't ask about that,