Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ppk от Март 23, 2012, 08:52



Название: Обрезается строка по двум нулям
Отправлено: ppk от Март 23, 2012, 08:52
Здравствуйте.
Никак не могу разобраться. Есть такой код
Код:
QString Test::getMyData(const char *buffer, int len)
{
   QStringList str;
   str = QString(buffer);
   return str;
}

Если приходит данные вида 057010e96fd67fa0354aef2023f03af8013030400420002c365
то они обрезаются по первым двум нулям (выделил красным).
Как мне прочитать всю строку?


Название: Re: Обрезается строка по двум нулям
Отправлено: Kurles от Март 23, 2012, 09:14
В цикле по символу наверное. У тебя даже переменная int len для этого предусмотрена, но нигде не используется.


Название: Re: Обрезается строка по двум нулям
Отправлено: LisandreL от Март 23, 2012, 09:20
Ну так '\0' - символ конца строки.
Нужны все байты - используйте QByteArray.


Название: Re: Обрезается строка по двум нулям
Отправлено: ppk от Март 23, 2012, 09:30
Спасибо. Попробую QByteАrray. Только я не понял: у меня же не "\0", а "00". Или два нуля также воспринимаются, как символ конца строки?


Название: Re: Обрезается строка по двум нулям
Отправлено: kuzulis от Март 23, 2012, 09:45
Цитировать
Спасибо. Попробую QByteАrray. Только я не понял: у меня же не "\0", а "00". Или два нуля также воспринимаются, как символ конца строки?

00 - это есть байт = 0, кодом которого является символ '\0' .
т.е. символ '\0' имеет реальное целое значение = 0 !
Что непонятного?

ЗЫ: у тебя каша в голове, подтяни вообще свои базовые знания. Этот воброс вообще не относится к Qt!


Название: Re: Обрезается строка по двум нулям
Отправлено: V1KT0P от Март 23, 2012, 11:54
Спасибо. Попробую QByteАrray. Только я не понял: у меня же не "\0", а "00". Или два нуля также воспринимаются, как символ конца строки?
Используй QByteArray & QByteArray::append ( const char * str, int len ), передаешь указатель и количество символов.