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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по QByteArray  (Прочитано 4792 раз)
qtист
Гость
« : Апрель 16, 2009, 13:57 »

есть вот такой код:

 
Код
C++ (Qt)
QByteArray  arrBlock;
QDataStream out(&arrBlock, QIODevice::WriteOnly);
out << quint16(0) <<  "s";

т.е. занесено число 0(2 байта) и символ 's'.

А если посмотреть размерность arrBlock,то она равна 8

Откуда? Шокированный
Записан
crackedmind
Гость
« Ответ #1 : Апрель 16, 2009, 14:00 »

Цитировать
А если посмотреть размерность arrBlock,то она равна 8
Как смотришь?
Записан
qtист
Гость
« Ответ #2 : Апрель 16, 2009, 14:05 »

так:
quint16 N=arrBlock.size();
Записан
Rcus
Гость
« Ответ #3 : Апрель 16, 2009, 14:08 »

typeof("s") <> typeof('s') Улыбающийся
Записан
whirlwind
Гость
« Ответ #4 : Апрель 16, 2009, 17:44 »

странно, почему-то даже char('s') запихивается как четыре байта, вместо одного. Только quint8('s') делает один байт
Записан
Sergeich
Гость
« Ответ #5 : Апрель 16, 2009, 18:49 »

В случае out <<  "s" вызывается QDataStream & operator<< ( const char * s ), он сначала записывает 4 байта - длину строки, потом строку, заканчивающуюся нулем - получаем sizeof(quint32) + sizeof("s\0") = 6 байт
В случае out <<  char('s'), поскольку метода operator<< ( char s ) у QDataStream нет, char преобразуется в int и вызывается QDataStream::operator<<(qint32 i)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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