Russian Qt Forum

Qt => Вопросы новичков => Тема начата: billidean от Ноябрь 27, 2015, 19:27



Название: Перевод нуль-терминированной строки из ASCII
Отправлено: billidean от Ноябрь 27, 2015, 19:27
Задача принять 100 байт "нуль-терминированной строки в ASCII" по UDP и вывести ее на экран (хотя бы в qDebug).
Принять-то я принимаю эти байты:
Код:
        QByteArray datagram = *data;
        QDataStream in(&datagram, QIODevice::ReadOnly);
что далее делать не знаю.
Делал так:
Код:
QChar t[1024];
for(i=0; i<99;i++)
{
in >> t[i];
qDebug() << t[i];
}
в консоли идут "?".

В WireShark вижу картинку (см вложение)
(http://W:\Work\PZ\Scan_sniffer1.png)

на ней справа видны символы, которые нужно получить на выводе.
Не пойму как разобрать QByteArray...
Я в этих преобразованиях как-то не очень


Название: Re: Перевод нуль-терминированной строки из ASCII
Отправлено: billidean от Ноябрь 27, 2015, 20:24
Вроде бы немного вник в проблему, пока делаю в функции обработки принятых данных так:
Код:
void MainWindow::read(QByteArray *data, QHostAddress *hostAddress, quint16 hostPort)
{
...
                QString s="";
                for(int i=0; i<99;i++)
                {
                    if( data->at(i) == 0x00 )
                        break;
                    s += data->at(i);
                }
                qDebug() << "s=" << s;
...
}
получаю "нуль-терминированную" строку, т.е. дальше "нуля" не читаю, и с ASCII воде получилось, т.к. не использую QDataStream (где-то вычитал в инете).

Но там будет пакет не только с такими данными, так что пока "не прощаюсь" :).