将Bitset保存到Struct字段中
Save a Bitset into a Struct Field
我决定不使用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
。
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 结构字段名称与 GDB 中的 STL 数组冲突
- 如何使用位字段将数据从二进制文件复制到结构中?
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 为什么我的struct stat有一个st_mtim而不是st_mtime字段?
- 将Bitset保存到Struct字段中
- 包括 <netinet/tcp_var.h> 错误:字段的类型不完整'struct xsocket'