Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将数组值转换为1';s和0';s到二进制_C++_Arduino - Fatal编程技术网

C++ 将数组值转换为1';s和0';s到二进制

C++ 将数组值转换为1';s和0';s到二进制,c++,arduino,C++,Arduino,在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]

在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];
}
char-bin[8];
对于(int i=0;i<8;++i){
bin&=输入值[i];
}

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

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

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

现在,
无符号字符
保证有1个字节,但不是8位。因此,如果可用,您应该使用类似于
uint8\t
的东西

最后,您可以将
bin
中的适当位设置为-

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

bin |=(InputValues[i]如果我正确理解了您的需求,那么您有一个单独位的数组,需要将其转换为具有相应位的字节

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

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

现在,
unsigned char
保证有1个字节而不是8位。因此,如果可用,您应该使用类似于
uint8\t
的内容

最后,您可以将
bin
中的适当位设置为-

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


bin |=(InputValues[i]你说的字节数组是什么意思?我开始回答时感到困惑。你想得到一个字节,该字节的位按照
InputValues
设置?我想串行。将结果打印为“0000111”。InputValues[0]到InputValues[2]可以是1或0,具体取决于切换开关。请查看我的更新代码,其中包含了您以前的建议。@stackquestions请不要将问题更改为包含呈现的解决方案。这会使问题和答案处于不一致的状态。我将回滚对此问题的编辑。@stackquestions您最后的评论非常重要混乱。你想要一个字符串还是一个字节值。它们彼此根本不一样。你说的字节数组是什么意思?我开始回答时感到困惑。你想要一个字节,其位按照
InputValues
设置?我想要串行。将结果打印为“0000111”。InputValues[0]到InputValues[2]可以是1或0,具体取决于切换开关。请查看我的更新代码,其中包含了您以前的建议。@stackquestions请不要将问题更改为包含呈现的解决方案。这会使问题和答案处于不一致的状态。我将回滚对此问题的编辑。@stackquestions您最后的评论非常重要混乱。你想要一个字符串还是一个字节值。它们彼此根本不一样。它工作了!但它给了我1或2或7或3。它给出了十六进制。我能把它作为字节只像“0000101”吗?uint8_t
在标准C中始终可用,除非有人想出了一个不太聪明的主意,用C为各种过时的、古怪的TI DSP编写代码。“有1字节,但不是8位。”真的吗?你能给我举一个例子,无符号字符是1字节,但不是8位吗?@peter_uBarnes看了看,它工作了!但它给了我1、2、7或3。它给出了十六进制。我能把它作为字节,只像“0000101”一样吗除非有人想出了一个不太聪明的主意,用C语言为各种过时、古怪的TI DSP编写代码,否则标准C语言中总是可以使用
uint8\u t
。“有1个字节,但不是8位。”真的吗?你能给我举个例子,说明无符号字符是1个字节,而不是8位吗?@peter\u barnes看一看