uint8_t id[8]
char buf[17];

snprintf(buf, sizeof(buf), "%02X%02X%02X%02X%02X%02X%02X%02X", id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7]);

これってもっと短く書けない?
速度も重視な感じで。