如何在 Arduino 中将 16 位 uint16_t 打印为四个十六进制数字
使用 Arduino 时,你经常想打印 16 位值(如 uint16_t)的十六进制值,由四个十六进制数字组成。例如,如果你有 uint16_t val = 2022;,你打算打印 07E6。
在 Arduino 中,你可以使用 Serial.printf() 以 %04x 作为格式说明符来实现。
此外,你通常想使用 __builtin_bswap16() 反转 uint16_t 的字节顺序,因为以 MSB 优先(大端序)写入十六进制值更直观,而大多数硬件平台以 LSB 优先(小端序)表示 uint16_t:
print_uint16_hex.ino
Serial.printf("val = %04x\r\n", __builtin_bswap16(val));使用 printf 时,%x 表示将值格式化为十六进制。04 表示用 0 填充值直到长度为 4 位数字。如果你只用 %x 格式化 2022,它会打印 7E6 而不是 07E5。这就是为什么你需要使用 %04x。
Check out similar posts by category:
Arduino, Electronics, Embedded, PlatformIO
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow