Russian Qt Forum
Апрель 25, 2024, 12:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перевод нуль-терминированной строки из ASCII  (Прочитано 1879 раз)
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 вижу картинку (см вложение)


на ней справа видны символы, которые нужно получить на выводе.
Не пойму как разобрать QByteArray...
Я в этих преобразованиях как-то не очень
« Последнее редактирование: Ноябрь 27, 2015, 19:31 от billidean » Записан
billidean
Гость
« Ответ #1 : Ноябрь 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 (где-то вычитал в инете).

Но там будет пакет не только с такими данными, так что пока "не прощаюсь" Улыбающийся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.