根据向量<bool> </bool>修改char的位

时间:2014-03-14 01:24:39

标签: c++ vector boolean byte bit

我有一个含有大量bool的载体。当我在向量中得到1时,我开始将下面的8个值作为位读取 - 我想根据这8个值修改一个char。

示例:

我有一个char c = 0; (00000000)。

根据向量我的8位是(10101010)。

如何将这些值分配到char的位?我可以使用矢量作为掩码吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

使用位移运算符<<。它会将位移一定量。

例如,5 << 220,因为向左移动的101是10100,或者是20。

vector<bool> v; // plus initialization

char c;   
for(size_t i = 0; i < v.size(); i++) {     
    c += v[i] << (v.size() - i - 1);
}

这假设你想要这个大端(最重要的是第一位)。如果您想要小端,请将(v.size() - i - 1)更改为i