Я написал эту функцию C для отправки массива из 32 байтов для отладки вывода в виде строки. В коде есть четкое повторение. Как я могу сделать его более аккуратным? Точный формат не имеет значения.Печать длинных шестнадцатеричных строк
// data is guaranteed to be 32 long
void debug_log_32B(uint8_t *data) {
char debug_msg[100];
char fmt[] = "%02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X %02X%02X";
sprintf(debug_msg, fmt,
data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9],
data[10], data[11], data[12], data[13], data[14], data[15], data[16], data[17], data[18], data[19],
data[20], data[21], data[22], data[23], data[24], data[25], data[26], data[27], data[28], data[29],
data[30], data[31]
);
debug_log(debug_msg);
}
Даже если я создал строку формата в цикле, то sprintf
заявление будет еще долго. Или код достаточно понятен?
+1 Ницца и в точку. Может быть полезно, почему 0x100 против OP 100 против 5 * 16 + 1 - но это нит. – chux
@chux Спасибо. Это общий размер буфера «один размер подходит всем». Но да, 81 было бы достаточно. –