В C мне нужно напечатать переменное количество символов в виде шестнадцатеричного значения во встроенной системе для отладки. Поскольку это часть макроса трассировки отладки, я хочу избежать циклов или другой логики, с которой printf
не может справиться. Я также не хочу объявлять какие-либо новые переменные, чтобы предотвратить проблемы Heisenbug. Выходное пространство также является проблемой, поэтому я хочу вывести его в шестнадцатеричном формате.
uint8_t* buffer;
uint8_t length;
MakeString(*message, &buffer, &length); //Function that puts some values in buffer and sets length
Я ищу printf, который может принимать буфер и длину для создания чего-то вроде:
0x1A1B1C0A02
для значений {1A,1B,1C,0A,02} и длины = 5
Я знаю, что %.*s
или %*
могут обрабатывать переменные размера. Есть ли способ сделать это без цикла for/while?