如何将二维字节数组转换为单个字节(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++;
}
我有这个数组:
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++;
}