打印uint8_t

时间:2013-01-16 12:53:18

标签: c debugging

我有uint8_t orig[ETH_ALEN];

如何使用__printf(3, 4)

进行打印

,定义为#define __printf(a, b) __attribute__((format(printf, a, b)))

Orig应该是以太网硬件地址。

2 个答案:

答案 0 :(得分:15)

使用C99格式说明符:

#include <inttypes.h>

printf("%" PRIu8 "\n", orig[0]);

答案 1 :(得分:9)

您需要构建一个合适的格式字符串。 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是为了确保将{8}位发送到printf();对于像uint8_t这样的无符号类型,它们不应该是必需的,但你也可以不用。

这假设是一个常规的48位MAC,并使用conventional以冒号分隔的十六进制样式进行打印。