将数组值 1 和 0 转换为二进制
Convert array values of 1's and 0's to binary
在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);
}
我改变了两件事。
- 我用
|=
而不是&=
.这是按位 OR 运算符。您需要使用 OR,因为它只在 LHS 中设置正确的位,而其他位保持不变。AND 不一定会设置该位,并且还会屏蔽(设置为 0)其他位。 - 使用
<< i
将数组中的位移动到相应的位置。
相关文章:
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- C++从二进制转换为十进制数
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 如何在 O(n) 中将二进制和转换为二进制
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 十进制到二进制转换器 c++
- 在C++中将结构转换和存储为二进制
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 如何在C ++中将二进制字符串128位转换为十进制字符串?
- 如何将二进制文件头示例代码 (C++/C#) 转换为 Python?
- 二进制 '==':未找到采用 'Enemy' 类型左侧操作数的运算符(或者没有可接受的转换)
- 将二进制转换为十进制,我如何要求用户仅输入二进制
- QTextStream的操作数到二进制的转换无效
- 在c++中读取和转换二进制数据
- c++转换二进制到十进制从字符串输入
- 计算器转换二进制到浮点值-我做错了什么