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

    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();
    }
    Ответ написан
    Комментировать