Russian Qt Forum
Июнь 04, 2020, 15:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача и получение числа одним байтом  (Прочитано 295 раз)
justengineer
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« : Май 14, 2020, 12:07 »

Здравствуйте!

Что-то не могу сообразить, как мне передать трехзначное число (например, 255) как 1 байт?
И как его принять опять же как 1 байт?
Приём-передача по TCP/IP.

Заранее спасибо.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4167



Просмотр профиля WWW
« Ответ #1 : Май 14, 2020, 12:18 »

uint8_t или quint8, выше 255 в 1 байт не влезет
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
justengineer
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #2 : Май 14, 2020, 13:23 »

Это я понимаю, спасибо большое.

Объясню: при отправке (просто socket->write(QByteArray ba)) я передаю QByteArray.
Проверяю размер того, что отправила: 4 байта всегда, хотя в QByteArray запихиваю одно число uint и отправляю его.
Откуда берётся ещё 3 байта?

А на принимающей стороне вообще не пойму: надо получить 12 байт (свой 1 байт, про который пишу выше, отправляю в качестве теста), в каждом байте записано десятичное число от 0 до 255. Но мой опять-таки QByteArray принимает это все как-то криво. Должен прийти мой тестовый 1 байт (с 12-ю байтами совсем запутаюсь), приходит опять 4 байта каких-то...
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 506


Просмотр профиля
« Ответ #3 : Май 14, 2020, 13:28 »

uint - это 4 байта.
quint8 - 1 байт.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1055


Просмотр профиля
« Ответ #4 : Май 14, 2020, 17:29 »

хотя в QByteArray запихиваю одно число uint

как запихиваешь ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5764


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Май 15, 2020, 19:52 »

Код:
quint8 v = 255;
.............
socket->write(QByteArray(1, static_cast<char> (v)));
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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