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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обрезается строка по двум нулям  (Прочитано 2816 раз)
ppk
Гость
« : Март 23, 2012, 08:52 »

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

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

Сообщений: 480



Просмотр профиля
« Ответ #1 : Март 23, 2012, 09:14 »

В цикле по символу наверное. У тебя даже переменная int len для этого предусмотрена, но нигде не используется.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Март 23, 2012, 09:20 »

Ну так '\0' - символ конца строки.
Нужны все байты - используйте QByteArray.
Записан
ppk
Гость
« Ответ #3 : Март 23, 2012, 09:30 »

Спасибо. Попробую QByteАrray. Только я не понял: у меня же не "\0", а "00". Или два нуля также воспринимаются, как символ конца строки?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Март 23, 2012, 09:45 »

Цитировать
Спасибо. Попробую QByteАrray. Только я не понял: у меня же не "\0", а "00". Или два нуля также воспринимаются, как символ конца строки?

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

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

ArchLinux x86_64 / Win10 64 bit
V1KT0P
Гость
« Ответ #5 : Март 23, 2012, 11:54 »

Спасибо. Попробую QByteАrray. Только я не понял: у меня же не "\0", а "00". Или два нуля также воспринимаются, как символ конца строки?
Используй QByteArray & QByteArray::append ( const char * str, int len ), передаешь указатель и количество символов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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