如何将两个 8 位数组(二进制数字字符串组合成一个 16 位的字符串?(arduino,移位寄存器)
How do I combine two arrays of 8 bits each (binary number strings into one single string with 16 bits? (arduino, shift registers)
在 Arduino 中,我试图将来自两个 PISO(并行输入 - 串行输出)移位寄存器的 8 位二进制 numbers/strings 组合成一个 16 位二进制字符串。 Arduino 上使用 shiftIn() 命令存储在变量 (switchVar1) 上的二进制数 switchVar1 = shiftIn(dataPin, clockPin);
switchVar1 最初由 byte switchVar1 = 72;
定义。
我正在这样做,这样我就可以使用 switch() 函数读取二进制字符串并进行不同的组合,因为我有 16 contacts/buttons ,其中将定义所有 16 个按钮的不同组合,所以我需要一个 16 的字符串位二进制数。
基本上,我问的是如何将两个 8 位二进制数数组转换为一个数组。
请记住,我是 c++ 的新手,所以可能有一些我可能没有想到的基本解决方案。
您应该查看按位运算和位掩码的工作原理。您会在这里找到一种方法。
Combining two uint8_t as uint16_t
解决了,感谢大家的评论。所以我只是这样做:
switchVar1 = shiftIn(dataPin, clockPin); switchVar2 = shiftIn(dataPin2, clockPin2); uint16_t switchVariable = switchVar1 | (switchVar2<<8);
正如我首先创建了两个字节文件,并将一个 (switchVar2) 上的数字向左“移动”了 8 步(即文字)(使用 <<
按位运算符)并将两者与按位或运算符相加(管道符号 |)在一个 uint16_t
变量类型中。然后我用 switch() case
命令读取所有组合。
(另外,我对一般的编程语言都是愚蠢的新手,说“数组”是我的错。)
在 Arduino 中,我试图将来自两个 PISO(并行输入 - 串行输出)移位寄存器的 8 位二进制 numbers/strings 组合成一个 16 位二进制字符串。 Arduino 上使用 shiftIn() 命令存储在变量 (switchVar1) 上的二进制数 switchVar1 = shiftIn(dataPin, clockPin);
switchVar1 最初由 byte switchVar1 = 72;
定义。
我正在这样做,这样我就可以使用 switch() 函数读取二进制字符串并进行不同的组合,因为我有 16 contacts/buttons ,其中将定义所有 16 个按钮的不同组合,所以我需要一个 16 的字符串位二进制数。
基本上,我问的是如何将两个 8 位二进制数数组转换为一个数组。
请记住,我是 c++ 的新手,所以可能有一些我可能没有想到的基本解决方案。
您应该查看按位运算和位掩码的工作原理。您会在这里找到一种方法。
Combining two uint8_t as uint16_t
解决了,感谢大家的评论。所以我只是这样做:
switchVar1 = shiftIn(dataPin, clockPin); switchVar2 = shiftIn(dataPin2, clockPin2); uint16_t switchVariable = switchVar1 | (switchVar2<<8);
正如我首先创建了两个字节文件,并将一个 (switchVar2) 上的数字向左“移动”了 8 步(即文字)(使用 <<
按位运算符)并将两者与按位或运算符相加(管道符号 |)在一个 uint16_t
变量类型中。然后我用 switch() case
命令读取所有组合。
(另外,我对一般的编程语言都是愚蠢的新手,说“数组”是我的错。)