如何在 Arduino 中将 32 位 uint32_t 打印为八个十六进制数字
使用 Arduino 时,你经常想打印 32 位值(如 uint32_t)的十六进制值,由八个十六进制数字组成。例如,如果你有 uint32_t val = 9177025;,你打算打印 008C07C1。
在 Arduino 中,你可以使用 Serial.printf() 以 %08lx 作为格式说明符来实现。此外,你通常想使用 __builtin_bswap32() 反转 uint32_t 的字节顺序,因为以 MSB 优先(大端序)写入十六进制值更直观,而大多数硬件平台以 LSB 优先(小端序)表示 uint32_t:
print_uint32.ino
Serial.printf("val = %08lx\r\n", __builtin_bswap32(val));使用 printf 时,%x 表示将值格式化为十六进制,而 l 告诉 printf() 参数是 long(32 位)而不是 int(16 位)。08 表示用 0 填充值直到长度为 8 位数字。如果你只用 %x 格式化 9177025,它会打印 008C07C1 而不是 008C07C1。这就是为什么你需要使用 %08lx。
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