如何将二维字节数组转换为单个字节(Arduino)?

How to convert a two-dimensional byte array into a single byte (Arduino)?

我有这个数组:

bool data[] = {{1,1,1,1},{0,0,0,0}};

我需要将它转换成 bool 数据类型,如下所示:

byte data = 11110000;

有什么想法吗?

您可以尝试这样的操作:

#define COLUMNS 2
#define ROWS 4
#define SIZE (COLUMNS * ROWS)


bool data[COLUMNS][ROWS] = {{1, 1, 1, 1}, {0, 0, 0, 0}};

byte result = 0;
int shift = SIZE;

for (int i = 0; i < COLUMNS; i++) {
    for (int j = 0; j < ROWS; j++) {
        result |= data[i][j] << --shift;
    }
}

单循环的另一种解决方案,适用于单维或多维数组。

bool data[2][4] = { { 1, 1, 1, 1 }, { 0, 0, 0, 0 } };

bool *pointer = reinterpret_cast<bool*>(data);
unsigned int value = 0;
for (unsigned int index = 0; index < sizeof(data); ++index) {
    value <<= 1;
    value |= *pointer++;
}