【问题标题】:Modifying the bits of a char according to a vector<bool>根据 vector<bool> 修改 char 的位
【发布时间】:2014-03-14 01:24:39
【问题描述】:
我有一个包含很多布尔值的向量。当我在向量中达到 1 时,我开始将接下来的 8 个值作为位读取 - 我想根据这 8 个值修改一个字符。
例子:
我有一个字符 c = 0; (00000000)。
根据向量我的 8 位是 (10101010)。
如何将这些值分配到 char 的位中?我可以使用矢量作为蒙版吗?如果有,怎么做?
【问题讨论】:
标签:
c++
vector
boolean
byte
bit
【解决方案1】:
使用位移运算符<<。它会移动一定量的位。
例如,5 << 2 是 20,因为 101 左移 2 是 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。