0
我已經寫了這個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就足夠了。 – 2013-07-12 18:06:33