【问题标题】: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 的位中?我可以使用矢量作为蒙版吗?如果有,怎么做?

【问题讨论】:

  • 你不应该使用vector&lt;bool&gt;

标签: c++ vector boolean byte bit


【解决方案1】:

使用位移运算符&lt;&lt;。它会移动一定量的位。

例如,5 &lt;&lt; 220,因为 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    相关资源
    最近更新 更多