1. ホーム
  2. c

[解決済み] uint8_tを表示する

2022-02-24 01:51:33

質問

私は uint8_t orig[ETH_ALEN];

を使用して印刷するにはどうすればよいですか? __printf(3, 4)

と定義されています。 #define __printf(a, b) __attribute__((format(printf, a, b)))

は、イーサネットのハードウェアアドレスです。

解決方法は?

適切なフォーマット文字列を構築する必要があります。その 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を想定しており、印刷には 従来の コロンで区切られた16進数スタイル。