Arduino或C中数据类型约束内的布尔运算和二进制协议定义

时间:2018-10-27 02:06:16

标签: c arduino binary

我正在建立一个二进制协议来处理n个10位模拟输入值。我正在尝试找到一种最佳方式来适应一系列10位值以及一种数据类型,该数据类型使执行布尔运算很容易。例如,

int main() {

    int array[] = {1024,343,512,256,223};
    char output[7];   

    for (int i = 0; i < 5; i++ ) {
        int addition = (array[i] << (10*1));
        output = output && addition;
    }

    for (int i = 0; i < 5; i++ ) {
        int printval = ((output >> (10*1)) && 0b1111111111);
        // this code is not working but should convey the idea with the intended output being the array elements in order.
        printf("Array %d: %d\n", i, printval);
    }
}

如果我能够像我对输出所做的那样将变量的大小设置为7个字节,足以存储5个10bit数据类型,并且能够对数组的被掩码元素执行位移位,则可以执行以下操作。

更简单地说,我有5个变量,在此示例中,我们将说它们的长度为4位; 1101、1011、1111、0010、0001,我希望将它们放在一起,以便它们按顺序存储在字节/字符数组中,因此在这种情况下

array[0] = 11011011
array[1] = 11110010
array[2] = 00010000 

并编写一种方法以根据其在数组中的位置(不是元素,而是位位置)提取n位的数据,其中需要提取的每个数据变量为10位。

0 个答案:

没有答案