Инициализация глобального массива строкой

нужно объявить массив глобально
const uint8_t data[]
Но в коде инициализация должна быть записана строкой например так:
const uint8_t data[] = "010203"
где “010203” hex значения. Как это правильно сделать для удобной читаемости не могу сообразить? Запись должна быть именно такой, т.к. строк этих много и вставляются они именно так. Пока на ум приходит только стоить этажерку из define которая будет преобразовывать это в употребляемый формат. Но даже так не могу понять с чего начать. Или есть способы записи более простые?

Массив одномерный?

да, но длинна произвольна

Там есть картинка в массиве … что тут ещё придумать …

Тогда так

const uint8_t data[]{
 0,1,2,3,4,5,6,7,8,9, //если в десятиричной
 0,1,2,3,4,5,6,7, //если в восмиричной
 0,1, //если в двоичной
};

Это чтобы удобней было читать

массив[] = “\x01\x03\x05”;

Если в шестнадцатеричной:
const uint8_t data[] = {0x01,0x03,0x05};

мужики, есть источник строк, который предоставляет выхлоп именно плотной строкой, допустим, на полторы тысячи байт, ручками его не поправишь. можно написать промежуточную программу, которая будет расставлять запятые, но источник меняется часто, использовать промежуточный софт, не удобно, а вставлять надо часто. Хотелось бы разобраться, как это сделать один раз через ctrl-c ctrl-v. А разбираться должен препроцессор.

Никому он ничего не должен.
Если число - это два символа, то так и обрабатывайте - со сдвигом на два символа.

так я и спрашиваю, как лучше поступить.
пока думаю что- то в этом роде
#define CONVERT(in) ...функция...
const uint8_t data[] = CONVERT("010203");
есть идеи?

Возьми да напиши конвертер из своего источника в строку в любой другой форма

1 лайк

что является источником ? файл , один из последовательных входов , и.т.п?
что мешает допиcать обработчик как раз для этого входа в нужную вам форму прям в ардуино ?

Я худею.
Дык там и проводите обработку, а ардуинке дайте только собрать данные с датчиков? И то не факт. А программу пишите тоже на большом компе в “Бейсике для приложений” или, если уж совсем неймётся, в “Борланд Си++” или на JAVA или Pyton

Макросов в Notepad++ всегда хватает для подобных задач …

вот все рпям советчики. А по делу сказать что ни будь есть? Источник - файл, формат файла разный, в зависимости от того чем работает конкретный человек. Формат строк одинаковый, но требует селективной выборки конкретным пользователем. У пользователя есть ардуинка и нулевое знание программирования, но большое желание сделать “всё хорошо” на ардуинке. Больше чем скопировать и вставить - для пользователя не возможно.

Сделай уже, не имей нам мосх

У пользователя есть компьютер? Тогда под туеву хучу форматов файлов можно написать ОДНУ программу (даже под EXEL), которая по нажатию кнопочки будет преобразовывать, а то и рандомизировать, данные. Хернёй не майтесь, пожалуйста.

так как , судя по всему , в программировании вы начинающий , не нулевой шанс что вы изначально выбрали принципилально не верный подход для решения задачи.
участники форума пытаются понять в чем изначально состояла задача (как она была поставлена) что бы дать совет правильно ли вы выбрали направления решения или нет

по делу говорить нечего , так ка “дела” нет
из того что известно и ваших запросов, удобней будет решать проблему, если известно что данные неоднородны и формируються каким то неоднородным образом , любые входные данные свести к какому то однородному формату(не факт что парсинг и сведение можно произвести средставми препроцессора) и потом уже с ним производить нужные манипуляции

Ну, если 40 лет программирования - начинающий, то да, малъчык.

Вас понять

инфа о ТС из секретных документов КГБ? :grinning: