Сравнение байтового массива с многомерным массивом

Скажем, у меня есть массив байтов

byte arr[7]={123456};

Как сравнить этот массив, например, со списком других массивов

byte  buffers[5][7] = {123456,654321,987654,456789,765432};

если этот метод неправильный, как я могу это объявить?

, 👍-1

Обсуждение

Как вы думаете, что на самом деле делает byte arr[7]={123456};?, @Jaromanda X

Итак, как я могу составить список массивов для сравнения?, @Amr Ahmed

каким ты ХОЧЕШЬ видеть arr? 1,2,3,4,5,6,0? или 64,0,0,0,0,0,0, @Jaromanda X

я хочу, чтобы это было 1,2,3,4,5,6, @Amr Ahmed

ну, ты делаешь это неправильно, @Jaromanda X

и что вы предлагаете сделать это правильно?, @Amr Ahmed

узнать, как инициализировать массив - см. ответ, @Jaromanda X

Как это вопрос об Arduino? Это скорее вопрос «помогите мне понять основы программирования на C/C++»., @Mikael Patel


1 ответ


2
byte arr[7]={123456};

устанавливает arr[0] = 64 – что составляет 123456 % 256 – и arr[1-6] остается равным 0

И вам также нужно только 6 (а не 7) значений — поэтому код будет таким:

byte arr[6]={1,2,3,4,5,6}; // вот как инициализировать массив
byte  buffers[5][6] = {{1,2,3,4,5,6},{6,5,4,3,2,1},{9,8,7,6,5,4},{4,5,6,7,8,9},{7,6,5,4,3,2}}; // вот как инициализировать 2D-массив

void setup() {
  Serial.begin(74880);
  delay(100);
  // этот код найдет совпадение, значение `i` будет совпавшим индексом
  int i;
  int j;
  for(i = 0; i < 5; i++) {
    for(j = 0; j < 6; j ++) {
      if(arr[j] != buffers[i][j]) {
        break;
      }
    }
    if(j == 6) {
      break;
    }
  }
  if (i < 5) {
    Serial.print("Found at index ");
    Serial.println(i);
  }

}
,

@JaromandaX Возможно, вы захотите сделать это для контроля качества Arduino, добавив, как использовать программную память для вектора/массива постоянных значений., @Mikael Patel

не понимаю, что ты имеешь в виду @MikaelPatel, @Jaromanda X