Arduino: 16-Bit uint16_t als vier Hex-Ziffern ausgeben

English Deutsch

In Arduino möchte man oft den Hex-Wert eines 16-Bit-Werts wie eines uint16_t ausgeben, bestehend aus vier Hex-Ziffern. Wenn man beispielsweise uint16_t val = 2022; hat, möchte man 07E6 ausgeben.

In Arduino kann man das mit Serial.printf() und %04x als Formatbezeichner tun.

Außerdem möchte man typischerweise die Byte-Reihenfolge des uint16_t mit __builtin_bswap16() invertieren, da es intuitiver ist, den Hex-Wert MSB-first (Big-Endian) zu schreiben, während die meisten Hardware-Plattformen den uint16_t als LSB-first (Little-Endian) darstellen:

print_uint16_hex.ino
Serial.printf("val = %04x\r\n", __builtin_bswap16(val));

Bei Verwendung von printf bedeutet %x, dass der Wert als Hex formatiert wird. 04 bedeutet, dass der Wert mit 0en auf eine Länge von 4 Ziffern aufgefüllt wird. Wenn man 2022 nur mit %x formatieren würde, würde 7E6 statt 07E6 ausgegeben. Deshalb muss man %04x verwenden.


Check out similar posts by category: Arduino, Electronics, Embedded, PlatformIO