gpt4 book ai didi

c++ - 将位集保存到结构字段中

转载 作者:行者123 更新时间:2023-11-28 01:04:57 25 4
gpt4 key购买 nike

我决定不使用 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’

我不想更改结构字段类型,那我该怎么办?对于我的问题多么愚蠢,我深表歉意。

提前致谢

最佳答案

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

关于c++ - 将位集保存到结构字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6773990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com