Задача кажется очень простой но непойму как.
В результате будет считываться с файла и отправляться команда в порт, но на данном этапе хочу понять как из строки “1d0047517a” сделать массив {0x1D, 0x00, 0x47, 0x51, 0x7A}?
Сначала надо понять, что за строка, и что за массив. Вариантов масса.
В простейшем случае это одно и тоже и ничего преобразовывать вообще не надо. (если вы в курсе - строка это массив)
Строка будет в файле на SD карте (там будет не одна строка, но с этим потом).
в курсе, но мне надо перевести этот масив из символьного в байты (по два)…, даже незнаю как правильно назвать то что мне нужно.
У меня есть масив {‘1’, ‘d’, ‘0’, ‘0’, ‘4’, ‘7’, ‘5’, ‘1’, ‘7’, ‘a’} мне нужно с него сделать {0x1D, 0x00, 0x47, 0x51, 0x7A}
Так правильнее объяснил?
Не очень. Что это {0x1D, 0x00, 0x47, 0x51, 0x7A}? Текстовая строка или массив байт?
Если строка всегда 10 символов, то так
char s[] = “1d0047517a”;
byte a[5] = {0};
sscanf(s, "%2X%2X%2X%2X%2X", a[0], a[1], a[2], a[3], a[4]);
не пробовал…
массив байт
Спасибо! Я так понимаю это немножко костыль, но работает
char a[] = "1d0047517a";
void setup() {
Serial.begin(19200);
byte b[5] = {0};
sscanf(a, "%2X%2X%2X%2X%2X", &b[0], &b[1], &b[2], &b[3], &b[4]);
for (int i = 0; i < 5; i++)
Serial.write(b[i]);
}
выводит то что надо
и что, прям “00” печатает вместо просто нуля?
А в чем костыль тогда?
а можно поподробней про эту команду?
А поискать?
в том что для другого количества надо будет создавать другой шаблон, но для моих потребностей достаточно.
не печатает, а выводит байт “00” в HEX. Скрин с проги которая отображает все что есть в порте в HEX
по простому - удобный парсер, выводит по шаблону из строки в переменные
я к тому, что код из сообщения 7 выведет 0, а не 00
Опять борцуны за права небинарных данных?