c++ - 整数到二进制存储在数组中

标签 c++ arrays raspberry-pi boolean vision

TL:DR 我有一个 10 位整数,并希望将其作为二进制数存储在数组中。


假设我有一个从 0 到 1023 的整数,我希望将该数字转换为 10 位二进制数,然后将其放入一个 boolean 数组中。这是我目前所做的。

void toBinary(bool *binary)
{
    string binaryStr = bitset<10>(myValue).to_string(); //to binary
    for (int i = 0; i < 10; i++) binary[i] = binaryStr[i] - '0';
}

有没有更好的办法呢?我将用它做一些视频处理,我将在 Pi 上运行它,所以我需要我的程序尽可能轻便和快速。

最佳答案

我不明白为什么要将位集转换为字符串。只需直接访问它的元素。

bitset<10> myBitset(myValue);
for (int i = 0; i < 10; i++)
    binary[i] = myBitset[i];

您还可以进行位移位,这是执行此操作的最低级方法:

int mask = 1; // binary 10000000 00000000 ...
for (int i = 0, l = NUM_BITS; i < l; ++i) {
    // binary & operation does 
    // AND logic operation for all corresponging bit
    // so 0010&0011=0010
    binary[i] = myValue & mask;
    // move the bits in mask one to the right
    mask = mask>>1;
}

如果你要使用 bitset,我建议你保留 bitset 而不是使用 bool* 因为在 bitsets 中,每一位实际上占据一位,而 bool 至少八位大。

最后,这是我为此制作的一些测试代码,您可以用它来做基准测试:

#include <iostream>
#include <bitset>
#define NUM_BITS 10
int main(int argc, char *argv[])
{
    const int numBits = NUM_BITS;
    bool binary[numBits];
    const int myValue = 1;

    std::bitset<NUM_BITS> myBitset(myValue);
    //for (int i = 0; i < NUM_BITS; i++)
        //binary[i] = myBitset[i];

    for (int i = 0, l = NUM_BITS; i < l; ++i) {
        std::cout<< (binary[i]?'1':'0')<<" ";
    }
    std::cout<<"\n";
    int mask = 1; // binary 10000000 00000000 ...
    for (int i = 0, l = NUM_BITS; i < l; ++i) {
        // binary & operation does 
        // AND logic operation for all corresponging bit
        // so 0010&0011=0010
        binary[i] = myValue & mask;
        // move the bits in mask one to the right
        mask = mask>>1;
    }

    for (int i = 0, l = NUM_BITS; i < l; ++i) {
        std::cout<< (binary[i]?'1':'0')<<" ";
    }
}

关于c++ - 整数到二进制存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41754678/

相关文章:

javascript - Tic Tac Toe Rendering X 在一个盒子里

javascript - 在树莓派上的 HTML 和 python 之间发送消息

javascript - 从 JSON 文件到 React JS 文件的图像不显示

javascript - 如何在我的 html 上使用 getJSON

python - 在 Raspberry Pi 上运行的 Docker 容器中访问 picamera 时出错

docker - Docker:是否可以使用覆盖后备文件系统?

c++ - 在 TStringList 中添加对象

c++ - C++中的 map 数据结构

c++ - 通知线程是否总是需要在修改期间锁定共享数据?

c++ - 从字符串中提取数字/数字范围的复杂算法