我有一个含有大量bool的载体。当我在向量中得到1时,我开始将下面的8个值作为位读取 - 我想根据这8个值修改一个char。
示例:
我有一个char c = 0; (00000000)。
根据向量我的8位是(10101010)。
如何将这些值分配到char的位?我可以使用矢量作为掩码吗?如果是这样,怎么样?
答案 0 :(得分:1)
使用位移运算符<<
。它会将位移一定量。
例如,5 << 2
为20
,因为向左移动的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
。