crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QByteArray и QDataStream, 4 лишних байта..
512es
  опции профиля:
сообщение 17.11.2008, 12:08
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


QByteArray packetData, packetData2;
QDataStream data(&packetData, QIODevice::WriteOnly);
packetData2.append("test");
data << (quint16) 22;
qDebug() << packetData.toHex() << packetData2.toHex();
data << packetData2;
qDebug() << packetData.toHex() << packetData2.toHex();




Output:

"0016" "74657374"

ок

"0016[b]00000004[/b]74657374" "74657374"

почему??

всмысле вот так:
"00160000000474657374" "74657374"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 17.11.2008, 13:01
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


я кажется понял..
00000004 это длинна строки "test".. 4 байта..

а можно как то отключить автоматическое добавление quitn32 перед каждой строкой?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.11.2008, 14:03
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(512es @ 17.11.2008, 13:01) *
а можно как то отключить автоматическое добавление quitn32 перед каждой строкой?
QTextStream?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sploid
  опции профиля:
сообщение 18.11.2008, 10:17
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 26.2.2008
Из: Москва
Пользователь №: 106

Спасибо сказали: 10 раз(а)




Репутация:   1  


если ты удалишь первые 4 байта из строки, которая пишется в стрим, то не сможешь определить ее длину при чтении из стрима.
Если ты сделаешь просто packetData += packetData2, то размер строки не будет дописан.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 20.11.2008, 18:26
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


оо.. их можно склаадывать =))))
спасибо!))

я просто не хочу хранить размерности строк в самом стриме. пусть они будут отдельно.. ограничиваться протоколом.. хоть и сложнее но на мой взгляд безопаснее.. да и байтоф меньше передавать по сети)

хотя над этим ещё стоит подумать..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.8.2022, 8:33