我正在建立一个二进制协议来处理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位。