【问题标题】:How to print numbers in HEX with printf in C?如何在 C 中使用 printf 打印十六进制数字?
【发布时间】:2023-02-09 22:21:25
【问题描述】:

如何在 C 中使用 printf 打印十六进制数字?

static void ReadReg_SI5338(uint8_t *pBuffer)
{
    uint8_t ret;
    ret = HAL_I2C_Master_Transmit(&hi2c2, SI5338_ADDR, pBuffer, 1, 5);
      if ( ret != HAL_OK )
      {
        printf("Error Tx\r\n");
      }
      else
      {
          ret = HAL_I2C_Master_Receive(&hi2c2, SI5338_ADDR, pBuffer, 1, 5);
          if ( ret != HAL_OK )
          {
              printf("Error Rx\r\n");
          }
          else
          {
              printf(pBuffer[0], "\r\n");
          }
      }
}

该代码有效,它读取正确的值,但在终端中打印垃圾。我想要它的格式为“0x38”、“0x01”等。但我不知道该怎么做。

【问题讨论】:

标签: c printf hal


【解决方案1】:

要在 C 中打印十六进制数字,请使用:

printf("%#02x", number);

#:表示在号码前加一个0x

02:意味着用 2 个零填充数字(也就是如果数字是 1,它将打印 0x01 而不是 0x1

x:十六进制说明符

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多