Как в QByteArray помещать и извлекать битовые поля без боли?

Есть QByteArray, как в него поместить, а потом извлечь битовые поля?
Без побитовых сдвигов.
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 2
pon79
@pon79
Программист Qt/C++
Было бы хорошо увидеть в контексте какой ситуации Вам это нужно, так как от этого зависит способ извлечения.
В самом простом случае:
#include <QCoreApplication>
#include <QDebug>

struct Device {
    bool mainPower: 1;
    bool reservePower: 1;
    bool alarm: 1;
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Device dev1{ true, false, true };

    QByteArray arr;
    arr.append( (char*) &dev1 );

    // куда-то передали arr

    char c{ arr.at(0) };
    Device *pDev1 = reinterpret_cast<Device *>( &c );

    qDebug() << pDev1->mainPower;
    qDebug() << pDev1->reservePower;
    qDebug() << pDev1->alarm;

    return a.exec();
}
Ответ написан
Комментировать
Zifix
@Zifix Куратор тега Qt
Barbatum
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы