Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++中如何从BIT集< 16 >中选择第一个8位?_C++_Bitset - Fatal编程技术网

在C++中如何从BIT集< 16 >中选择第一个8位?

在C++中如何从BIT集< 16 >中选择第一个8位?,c++,bitset,C++,Bitset,我有一个变量,它的类型是位集。我想得到变量的前8位并将其放入char变量中。我知道如何将比特集转换成字符,但是我不知道如何选择前8位并将其转换成char。 < p>如果前面8位是8兆字节,考虑使用>操作符: #include <iostream> int main() { std::bitset<16> myBits(0b0110110001111101); char reg = 0; reg = static_cast<char>

我有一个变量,它的类型是位集。我想得到变量的前8位并将其放入char变量中。我知道如何将比特集转换成字符,但是我不知道如何选择前8位并将其转换成char。

< p>如果前面8位是8兆字节,考虑使用>操作符:

#include <iostream>

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

    reg = static_cast<char>(myBits.to_ulong() >> 8);
}
从:

如果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());
}

要在单个字符变量中使用文本表示法01001101还是二进制表示法?请尝试使用static\u castmybitset.to\u ulong&0xff。