什麼用使用HHX代替X,在下面mac_str的代碼是字符指針和MAC是uint8_t陣列,什麼是hh和h格式說明符的需要?
sscanf(mac_str,"%x:%x:%x:%x:%x:%x",&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
當我嘗試上述代碼它給出警告,
warning: format ‘%x’ expects argument of type ‘unsigned int *’, but argument 8 has type ‘uint8_t *’ [-Wformat]
,但我在一些代碼看到他們指定
sscanf(str,"%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
它不給任何警告
但兩者都工作一樣,有什麼用HHX代替X的需要,我搜索在網,但因此未得到直接的回答
'hh'表示,作爲一個歷史的猜測,對於half_的_half。那就是一個字節。 –
http://stackoverflow.com/questions/4586962/what-is-the-purpose-of-the-h-and-hh-modifiers-for-printf –
use'sscanf(「%」SCNx8,&x);' –
BLUEPIXY