将Bitset保存到Struct字段中



我决定不使用MACROS进行按位操作,而是使用BitSet。基本上我打算做的是,我收到一个结构体,计算它的位,然后将它们发生在另一个结构体中。

我收到一个Struct,说:

typedef struct{
uint8 status; //!< Status
} MsgStatus;

我需要获得状态并检查每个接收到的位,因此我创建了接收到的结构体的bitset:

m_msgBits = new MsgStatus();
bitset<8> msgBits(m_msgBits->status);
// I evaluate the bits 

现在,在求值之后,我需要将接收到的位附加到另一个结构体中,例如:

typedef struct{
uint32 status; //!< Status
} MsgOverallStatus;

那么,我要做的是:

m_OverallStatus = new MsgOverallStatus();
bitset<16> overallBits(m_OverallStatus->status);
m_OverallStatus.reset(); // 00000000 00000000
//Then append bits in msgBits in overallBits, for example:
overallBits.set(0, msgBits[0]);
overallBits.set(1, msgBits[1]);
overallBits.set(2, msgBits[2]);
//==== HERE WHERE I DUNNO HOW TO DO IT ====
m_OverallStatus->status = overallBits;

我想把比特赋值给结构体字段,我得到这个错误:不能转换' std::bitset<16u> '到' uint16 '在赋值

我不想改变struct字段类型,所以我能做什么?我为我的问题很愚蠢而道歉。

Thanks in advance

使用std::bitset的成员函数to_ulong,该函数返回集合中的位作为unsigned long

最新更新