Как принимать и разбирать по UDP QByteArray в структуру из битовых полей?
Если гипотетически, ваша программа будет переноситься между разными компиляторами, процессорами, и архитектурами, вам придется учесть множество нюансов:

1) простое копирование данных из пакета в структуру будет работать только в том случае, если на обеих машинах одинаковая архитектура процессора и один и тот же компилятор. В противном случае возможны нюансы с выравниванием полей в структуре (его надо отключить) и с порядком хранения байт (а тут уже начинаются проблемы)

2) разные архитектуры процессоров хранят целые числа с разным порядком байт. Чтобы не возникало конфликтов, принято по сети передавать данные в сетевом порядке байт. Для перевода в него есть семейства функций hton[s|l]/ntoh[s|l] . Без них вы будете наблюдать жуткие глюки.

Отсюда следует, что нельзя просто так (тм) копирнуть байты, пришедшие из сети куда-то там, нужно как минимум преобразовать их из сетевого порядка в хостовый (а при отсылке - из хостового в сетевой), и уже потом заталкивать в поля структуры (так что выравнивание можно и не отключать в таком случае).
Решил , но не без помощи сообщества, Спасибо.

Код структуры:

#pragma pack(push, 1) // работает без директив
struct srt_t // размер структуры 160 бит или 20 байт
{
    uint8_t one;
    uint8_t two;
    uint16_t three;
    uint32_t four;
    uint64_t five;
    uint32_t six;
};
#pragma pack(pop)
Код кодирования структуры в QByteArray:

srt_t ht{ 255, 255, 65535, 4294967295, 9223372036854775807, 255 };

    QByteArray arr;
    arr.append( reinterpret_cast<char *>( &ht ), sizeof( ht ) );
Код декодирования в структуру:

srt_t *pDev1 = reinterpret_cast<srt_t *>( arr.data() );

    qDebug() << pDev1->one;
    qDebug() << pDev1->two;
    qDebug() << pDev1->three;
    qDebug() << pDev1->four;
    qDebug() << pDev1->five;
    qDebug() << pDev1->six;