Russian Qt Forum

Qt => Вопросы новичков => Тема начата: justengineer от Май 14, 2020, 12:07



Название: Передача и получение числа одним байтом
Отправлено: justengineer от Май 14, 2020, 12:07
Здравствуйте!

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

Заранее спасибо.


Название: Re: Передача и получение числа одним байтом
Отправлено: kambala от Май 14, 2020, 12:18
uint8_t или quint8, выше 255 в 1 байт не влезет


Название: Re: Передача и получение числа одним байтом
Отправлено: justengineer от Май 14, 2020, 13:23
Это я понимаю, спасибо большое.

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

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


Название: Re: Передача и получение числа одним байтом
Отправлено: ssoft от Май 14, 2020, 13:28
uint - это 4 байта.
quint8 - 1 байт.


Название: Re: Передача и получение числа одним байтом
Отправлено: qate от Май 14, 2020, 17:29
хотя в QByteArray запихиваю одно число uint

как запихиваешь ?


Название: Re: Передача и получение числа одним байтом
Отправлено: Пантер от Май 15, 2020, 19:52
Код:
quint8 v = 255;
.............
socket->write(QByteArray(1, static_cast<char> (v)));