Как преобразовать строку шестнадцатеричных чисел с разделителями в массив int
Я отправляю строку в Arduino через последовательный порт, я создал программу, которая отправляет данные, поэтому я могу изменить ее на что угодно, но сейчас она отправляет строку шестнадцатеричных чисел, разделенных ':', например 00:AA:FF, и мне нужно поместить это в массив int на Arduino, основная проблема в том, что я не всегда знаю, насколько большим будет массив, иногда всего 2 индекса, иногда 16 индексов.
Как я уже сказал, я создал программу, отправляющую данные, поэтому я могу делать с данными что угодно, мне просто нужно передать массив int в Arduino и вернуть его в виде массива int через последовательный порт
@cooltop101, 👍1
Обсуждение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(){}
,
@VE7JRO
Смотрите также:
- Как преобразовать строку в шестнадцатеричный массив
- Матричный дисплей с Arduino UNO (ПРОБЛЕМА)
- Программа для умножения чисел на самом деле не будет их умножать
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
- Arduino как USB HID
это школьное задание?, @jsotola
Знаете ли вы верхний предел их количества?, @Majenko