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

Есть QByteArray, как в него поместить, а потом извлечь битовые поля?
Без побитовых сдвигов.
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 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
Как насчет использования https://doc.qt.io/archives/qt-4.8/qbitarray.html?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
28 июл. 2021, в 00:00
2000 руб./за проект
27 июл. 2021, в 22:00
25000 руб./за проект
27 июл. 2021, в 21:59
1500 руб./за проект