整数到bool数组

时间:2012-09-16 14:16:20

标签: c++

我想将像83这样的整数编码为二进制代码,如1100101,最快的方法是什么?现在我正在使用这段代码:

ToBinary(int size, int value) {  
    size--;  
    this->code = new bool[size];  
    int in = size;  
    while (in >= 0) {  
        if(pow(2, in) <= value) {  
        this->code[size-in] = pow(2, in);  
        value -= pow(2, in);  
        } else   
            this->code[size-in] = 0;  
        in--;  
    }  
}

2 个答案:

答案 0 :(得分:3)

您可以利用>>进行转换,让事情变得更轻松:

ToBinary(int size, int value) {
    int i = size;

    this->code = new bool[size];

    while(i--) {
        this->code[i] = (value >> i) & 1;
    }
}

(或者,以相反的顺序,this->code[size - i]。)

答案 1 :(得分:1)

如果您在编译时知道大小,std::bitset<size> bits(value);将在其构造函数中执行您想要的操作。