繁体   English   中英

如何从c ++中的bitset <16>中选择前8位?

[英]How to select first 8 bit from bitset<16> in c++?

我有一个变量,它的类型是bitset <16>。 我想得到我的变量的前8位并将其放入char变量。 我知道如何将bitset转换为char,但我不知道如何选择前8位并将其转换为char。

如果你通过“前8位”谈论8-MSB,考虑使用>>运算符:

#include <iostream>

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

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

std :: bitset构造函数doc

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM