我有一个变量,它的类型是bitset< 16>。我想得到我的变量的前8位并将其放入char变量。我知道如何将bitset转换为char,但我不知道如何选择前8位并将其转换为char。
答案 0 :(得分: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 :(得分:1)
来自doc of the std::bitset constructor:
如果val的值表示大于bitset大小, 只考虑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());
}