drucken uint8_t
Habe ich uint8_t orig[ETH_ALEN];
Wie kann ich drucken Sie es mit __printf(3, 4)
definiert als #define __printf(a, b) __attribute__((format(printf, a, b)))
den Orig sollte ethernet-hardware-Adresse.
%u
funktioniert für jedenuintN_t
ich denke, oder zumindestuint8_t
.- Mögliche Duplikate von Formatangaben für uint8_t, uint16_t, ...?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie konstruieren eine format-string geeignet. Die
printf()
Funktion hat keine Möglichkeit, den Druck ein array in einem Rutsch, so dass Sie brauchen, um es zu teilen und drucken Sie jedesuint8_t
:Den
& 0xff
ist, um sicherzustellen, onlu 8 bits gesendet, umprintf()
; Sie sollte nicht erforderlich sein für einen vorzeichenlosen Typ wieuint8_t
obwohl, so Sie versuchen können, ohne zu.Diese setzt die regelmäßige 48-bit MAC, und druckt mit der konventionelle getrennt durch Doppelpunkt hex-Stil.
uint8_t
garantiert ist, haben nur 8 bits, so dass die Maske ist überflüssig. Aber selbst dann mehr als 8 bit wird gesendet, weil sowiesoprintf
ist Variable, so dass Sie alle gefördert werden, umunsigned int
.uint8_t
darstellbar sind alsint
, so dass die integer-Aktionen [und damit default argument promotions], wird die Förderunguint8_t
zuint
.unsigned
kam aus dem nichts. Was ich meinte, war mehr als 8 bits wird zu printf, da der integer-promotion.Verwenden C99-format-Bezeichner: