想要在没有itoa功能的情况下将整数转换为字符串

use*_*679 0 c linux embedded

我想int to char在不使用itoa()函数的情况下在C中转换*.

因为在我的Linux系统上我的itoa功能不存在.我正在使用此处找到的代码

我想在使用Linux的嵌入式设备上运行此功能.

所以我正在寻找不使用itoa.

sprintf也想使用它,因为它只用于打印.

所以任何身体请帮我弄清楚这个问题.

谢谢

cni*_*tar 7

事情是snprintf完美的功能:

char str[LEN];
snprintf(str, sizeof(str), "%d", num);
Run Code Online (Sandbox Code Playgroud)


Lun*_*din 5

这是您可以使用的简单片段。有更优雅和更高级的方法,但这可以完成工作。

在过去的嵌入式项目中,我测得它的效率比 sprintf() 大约高 1000 倍。此代码也符合 MISRA-C 标准。

void getDecStr (uint8_t* str, uint8_t len, uint32_t val)
{
  uint8_t i;

  for(i=1; i<=len; i++)
  {
    str[len-i] = (uint8_t) ((val % 10UL) + '0');
    val/=10;
  }

  str[i-1] = '\0';
}
Run Code Online (Sandbox Code Playgroud)