我uint8_t orig[ETH_ALEN];
打印uint8_t
我如何可以打印使用其定義爲#define __printf(a, b) __attribute__((format(printf, a, b)))
__printf(3, 4)
的原稿應該是以太網硬件地址。
我uint8_t orig[ETH_ALEN];
打印uint8_t
我如何可以打印使用其定義爲#define __printf(a, b) __attribute__((format(printf, a, b)))
__printf(3, 4)
的原稿應該是以太網硬件地址。
您需要構造一個適合的格式字符串。該printf()
函數沒有打印一氣呵成數組的方式,所以你需要把它分解並打印出每個uint8_t
:
__printf("MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
orig[0] & 0xff, orig[1] & 0xff, orig[2] & 0xff,
orig[3] & 0xff, orig[4] & 0xff, orig[5] & 0xff);
的& 0xff
是確保onlu 8位被髮送到printf()
;他們不應該需要像uint8_t
這樣的無符號類型,儘管如此,您也可以嘗試。
這假設了一個常規的48位MAC,並使用冒號分隔的十六進制樣式打印出conventional。
使用C99格式說明:
#include <inttypes.h>
printf("%" PRIu8 "\n", orig[0]);
'%用於任何'uintN_t' u'的作品,我想,或至少'uint8_t'。 – rvighne