Как преобразовать строку шестнадцатеричных чисел с разделителями в массив int

Я отправляю строку в Arduino через последовательный порт, я создал программу, которая отправляет данные, поэтому я могу изменить ее на что угодно, но сейчас она отправляет строку шестнадцатеричных чисел, разделенных ':', например 00:AA:FF, и мне нужно поместить это в массив int на Arduino, основная проблема в том, что я не всегда знаю, насколько большим будет массив, иногда всего 2 индекса, иногда 16 индексов.

Как я уже сказал, я создал программу, отправляющую данные, поэтому я могу делать с данными что угодно, мне просто нужно передать массив int в Arduino и вернуть его в виде массива int через последовательный порт

, 👍1

Обсуждение

это школьное задание?, @jsotola

Знаете ли вы верхний предел их количества?, @Majenko


1 ответ


1

Вы можете сохранить шестнадцатеричные числа в массиве int, используя strtok() и strtol().

char str[] = "00:AA:FF:7FFF";
int intArray[16]; // Максимальное количество шестнадцатеричных чисел.

void setup(){

  Serial.begin(9600);

  int counter = 0;
  char * pch = strtok(str, ":");

  while(pch != NULL){
    intArray[counter] = strtol(pch, NULL, 16);
    pch = strtok(NULL, ":");
    counter++;
  }
  Serial.print("Item Count = ");
  Serial.println(counter);

  for(int i = 0; i < counter; i++){
    Serial.println(intArray[i]);
  }

}

void loop(){}
,