簡體   English   中英

將位集保存到結構字段中

[英]Save a Bitset into a Struct Field

我決定不使用 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的成員 function to_ulong ,它將集合中的位作為unsigned long返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM