私は持っていますuint8_t orig[ETH_ALEN];
どうすれば印刷できますか__printf(3, 4)
これは次のように定義されます#define __printf(a, b) __attribute__((format(printf, a, b)))
Origはイーサネットハードウェアアドレスである必要があります。
C99フォーマット指定子を使用します。
#include <inttypes.h>
printf("%" PRIu8 "\n", orig[0]);
適切なフォーマット文字列を作成する必要があります。この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進スタイルを使用して印刷します。