将长整型值打印为带有前导零的十六进制

Printing long value to hex with leading zeroes

本文关键字:十六进制 长整型 打印      更新时间:2023-10-16

我一直在使用这个函数来打印带有 4 位小数的前导零的 int 值,效果很好。

使用 Arduino IDE 1.8.12

void printHex(int num, int precision)
{
Serial.println(num);
char tmp[16];
char format[128];
sprintf(format, "%%.%dX", precision);
sprintf(tmp, format, num);
Serial.println(tmp);
}

调用函数printHex(100,4)会打印出0064

我现在想打印小数点后 5 位的长值,但它并不像我想象的那么简单。

例如printHex(200000,5)应该打印出30D40printHex(0,5)应该打印00000

我尝试将 int num 更改为长 num 并打印 5 位数字,但 MSB 始终为 0

目前我得到的是00D40而不是30D40

想通了,不得不在冲刺中使用uint32_t和长

void printHex(uint32_t num, int precision)
{
char tmp[16];
char format[128];
sprintf(format, "%%0%dlX", precision);
sprintf(tmp, format, num);
Serial.print(tmp);
}