在c ++中int到bool []

时间:2011-12-07 03:19:46

标签: c++ int boolean

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

2 个答案:

答案 0 :(得分:6)

除非你真的需要它特别是一个bool数组,否则我会使用std::bitset

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

您通常可以将其视为一组bool,测试,设置和翻转各个位等。当然,如果您希望将可移植性设置为具有不同大小的int,则可能需要将其修改为类似的东西:

#define size (sizeof(int) * CHAR_BIT)

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

答案 1 :(得分:2)

编辑:正如比我更有经验的人指出,如果数字为负数,这样做可能会导致问题(完全取决于您的编译器)。在任何情况下,以这种方式处理负数是没有意义的,除非你还规定了返回值将使用什么样的算术表示(1s补码?2s补码?前缀符号位?)所以这种方法实际上是据我所知,对负数没用。

很抱歉将注意力转移到更有价值的答案上。

<强>原始

嗯,这是我想到的:

int i = 42; // or whatever
std::vector<bool> vec;

while(i) {
    vec.push_back(i & 1);
    i >>= 1;
}

std::reverse(vec);

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

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