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は、onlu8ビットが確実に送信されるようにするためのものprintf()です。ただし、符号なしタイプの場合は必要ないので、なしuint8_tでも試すことができます。

これは、通常の48ビットMACを想定しており、従来のコロンで区切られた16進スタイルを使用して印刷します。

于 2013-01-16T12:56:37.250 に答える