[Qt-interest] How to get unicode data from socket?
Bradley T. Hughes
bradley.hughes at nokia.com
Thu Jan 14 12:41:11 CET 2010
On 01/14/2010 12:26 PM, Sean Harmer wrote:
> Hi,
>
> On Thursday 14 January 2010 11:20:00 Alex wrote:
>> Hi,
>>
>>
>> I have a program written in QT and it receives data via socket connection.
>> The data format is:
>> +--------------------+-----------------------+
>> *| sizeOfData(4bytes) | Data (Unicode string) |*
>> +--------------------+-----------------------+
>> My questions are:
>>
>> 1. After I read the first 4 bytes data, I use memcpy() to get/convert
>> the following data size. Does QT provide a convenient way to achieve this
>> instead of memcpy()?
>> 2. I use QTcpSocket.read(sizeOfData), which returns the QByteArray, to
>> read the real data but I can't find a way to convert it to QString. How
>> should I do?
>>
>
> QString has a constructor that takes a QByteArray:
>
> http://doc.trolltech.com/4.6/qstring.html#QString-8
But this function is documented to convert using toAscii().
Depending on how the OPs string is encoded, you'll probably want to use
fromUtf8(), fromUtf16(), or possibly the UTF-32 codec (iirc, there is one in
Qt, but I'm too lazy to look).
--
Bradley T. Hughes (Nokia-D-Qt/Oslo), bradley.hughes at nokia.com
Sandakervn. 116, P.O. Box 4332 Nydalen, 0402 Oslo, Norway
More information about the Qt-interest-old
mailing list