8

我有uint8_t orig[ETH_ALEN];

如何使用打印它__printf(3, 4)

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

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

4

2 回答 2

18

使用 C99 格式说明符:

#include <inttypes.h>

printf("%" PRIu8 "\n", orig[0]);
于 2013-01-16T12:56:52.687 回答
11

您需要构造一个合适的格式字符串。该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,并使用传统的冒号分隔的十六进制样式打印。

于 2013-01-16T12:56:37.250 回答