Было бы хорошо увидеть в контексте какой ситуации Вам это нужно, так как от этого зависит способ извлечения.
В самом простом случае:
#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();
}