2015-11-03 21 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()); 
} 
相关问题