Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demiurg от Ноябрь 01, 2011, 22:43



Название: Класс для смешанных данных
Отправлено: demiurg от Ноябрь 01, 2011, 22:43
Подскажите класс который можно использовать как буфер для приёма байтовых данных, часть из которых идёт как строка, а часть как байты. Использую QByteArray , но он 0x00 не воспринимает... и парсер "затыкается".


Название: Re: Класс для смешанных данных
Отправлено: LisandreL от Ноябрь 02, 2011, 01:23
Поясните, что вам от него нужно.
QByteArray вполне может содержать ноль.
В общем покажите участок кода, поясните, что от него хотели и что реально получается.


Название: Re: Класс для смешанных данных
Отправлено: demiurg от Ноябрь 02, 2011, 10:31
Код:
void EchoServer::onRead()
{
    QTcpSocket *client = qobject_cast<QTcpSocket*>(sender());
    QByteArray block = client->readAll();
    QString s = QTextCodec::codecForTr()->toUnicode(block.data());

Да тупал я, звиняюсь. Я ж в строку всё преобразую и там отбрасывает всё справа от нуля...

А такой эффект только от 0x00 будет или нестрочные символы тоже порежут s ?  Хочу валидацию данных сделать просто... Передаются только ascii , а вот как выявить и преобразовать некондиционные данные - вопрос конечно...


Название: Re: Класс для смешанных данных
Отправлено: andrew.k от Ноябрь 02, 2011, 11:07
как они у тебя туда попадают. так и извлекай их. у тебя же не случайный набор данных.


Название: Re: Класс для смешанных данных
Отправлено: andrew.k от Ноябрь 02, 2011, 11:10
а 0 - признак конца строки. странно, что тебя это удивляет.