2015-11-03 20 views
3

我有一個變量,它的類型是bitset < 16>。我想獲得我的變量的第一個8位,並將其放入char變量。我知道如何將bitset轉換爲char,但我不知道如何選擇第一個8位並將其轉換爲char。如何在C++中從位集<16>中選擇第一個8位?

+0

你想文本表示(' 「01001101」'),或在單'char'可變的二進制表示? –

+3

'std :: bitset'實現通常的二元運算符'>>','&'等,所以你可以使用它們來提取你想要的位。 –

+4

試試'static_cast (mybitset.to_ulong()&0xff)'。 –

回答

4

如果 「前8位」 你在談論8 MSB,可以考慮使用>>操作符:

#include <iostream> 

int main() { 
    std::bitset<16> myBits(0b0110110001111101); 
    char reg = 0; 

    reg = static_cast<char>(myBits.to_ulong() >> 8); 
} 
+1

感謝Benjamin.it工作完美。 –

1

doc of the std::bitset constructor

如果val的值表示大於位集大小,只考慮val的最低有效位。

那麼另一種解決方案可能是:

#include <iostream> 

int main() { 
    std::bitset<16> myBits16(0b0110110001111101); 
    std::bitset<8> myBits8(myBits16.to_ulong()); 
    char reg = static_cast<char>(myBits8.to_ulong()); 
} 
相關問題