gpt4 book ai didi

c++ - 将 1's and 0' 的数组值转换为二进制

转载 作者:行者123 更新时间:2023-11-30 01:37:48 25 4
gpt4 key购买 nike

在 Arduino IDE 中,我将所有输入值放入一个数组中,如下所示:

int eOb1 = digitalRead(PrOb1);
int eLoop = digitalRead(PrLoop);
int eOb2 = digitalRead(PrOb2);

InputValues[0] = eOb1;
InputValues[1] = eLoop;
InputValues[2] = eOb2;
InputValues[3] = 0;
InputValues[4] = 0;
InputValues[5] = 0;
InputValues[6] = 0;
InputValues[7] = 0;

我想将其转换为字节数组,如下所示:00000111
你能给我看看吗?我尝试使用 for 循环来迭代这些值,但它不起作用。

char bin[8];
for(int i = 0; i < 8; ++i) {
bin &= InputValues[i];
}

最佳答案

如果我正确理解您的要求,您有一个单独位的数组,您需要将其转换为具有相应位的字节。

因此,首先,您应该声明 bin类型为unsigned char而不是char[8]char[8]表示 8 个字节的数组,而您只需要一个字节。

然后您需要将其初始化为 0。(这很重要,因为 |= 需要变量具有某个已定义的值)。

unsigned char bin;

现在,unsigned char保证有 1 个字节,但不是 8 位。所以你应该使用类似 uint8_t 的东西如果有的话。

最后您可以在 bin 中设置适当的位。作为 -

for(int i = 0; i < 8; ++i) {
bin |= (InputValues[i] << i);
}

我改变了两件事。

  1. 我用过|=而不是&= 。这是按位或运算符。您需要使用 OR,因为它只设置 LHS 中的正确位,而其他位保持不变。 AND 不一定会设置该位,并且还会屏蔽掉(设置为 0)其他位。
  2. 使用<< i将数组中的位移动到相应的位置.

关于c++ - 将 1's and 0' 的数组值转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49023198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com