c++中的Int转换为bool[]

int to bool[] in c++

本文关键字:bool 转换 中的 Int c++      更新时间:2023-10-16

我想做的是给定一个参数const int &i,以bool数组的形式返回i的二进制表示的位(并且返回也会很棒)…有人知道怎么做吗?

除非您确实需要它是一个bool数组,否则我会使用std::bitset:

std::bitset bits<32>(i);

你通常可以把它当作一个bool数组,测试、设置和翻转单个位,等等。当然,如果您希望可移植到具有不同int大小的对象上,您可能希望将其修改为:

#define size (sizeof(int) * CHAR_BIT)
std::bitset bits<size>(i);

Edit:正如比我更有经验的人指出的那样,如果数字是负的,这样做可能会导致问题(具体发生什么取决于您的编译器)。在任何情况下,以这种方式处理负数都是没有意义的,除非您还规定了返回值将使用哪种算术表示(1s补码?2 s补充吗?),因此,据我所知,这种方法对于负数实际上是无用的。

对不起,让你的注意力从更有价值的答案上转移了。

原来

嗯,我想到了这个:

int i = 42; // or whatever
std::vector<bool> vec;
while(i) {
    vec.push_back(i & 1);
    i >>= 1;
}
std::reverse(vec);

当然这不是一个数组,但是如果你想把vector的内容复制到数组中也很简单,例如:

bool boolArray[] = new bool[vec.size()];
std::copy(vec.rbegin(), vec.rend(), boolArray);