我决定不使用 MACROS 进行按位运算,而是使用 BitSet。基本上我打算做的是,我收到一个结构评估它的位,然后将它们附加到另一个结构。
我收到一个结构,说:
typedef struct{
uint8 status; //!< Status
} MsgStatus;
我需要获取状态并检查每个接收到的位,所以我创建了一个接收到的结构的位集:
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'
我不想更改结构字段类型,我该怎么办?我为我的问题多么愚蠢而道歉。
提前致谢