如何在Arduino库中将十进制转换为十六进制

时间:2020-12-22 21:55:06

标签: arduino

我需要在此函数中添加从 dec 到 hex 的转换,但失败了。

    void AB1805::set_minute(const uint8_t value)
{
  _minute = value % MAX_MINUTE;
  write_rtc_register(MINUTE_REGISTER, _minute);
}

我试过了

void AB1805::set_minute(const uint8_t value)
{
  _minute = value % MAX_MINUTE;
  write_rtc_register(MINUTE_REGISTER, dec_hex(_minute,2));
}

uint8_t AB1805::dec_hex(uint8_t tens, uint8_t digits)
{
  uint8_t ret;
  ret = (tens<<4) + digits;
  return ret;
}

2 个答案:

答案 0 :(得分:1)

十六进制和十进制表示法只是表示相同值的两种不同方式。

set_minute(255);set_minute(0xFF);set_minute(0b11111111);

完全相同

如果您想要以特定格式表示该数字的字符串,则只需指定一种格式。如果您只想在代码中使用该值,则不需要。

答案 1 :(得分:0)

通常,RTC 以 BCD 格式存储数据

uint8_t toBCD(uint8_t val) {  // expects a value 0 .. 99 
  return (val%10 & 0x0F) | (val/10 << 4); // returns 0x00 .. 0x99
}

没有错误检查,就像在 Arduino 世界中一样。