C语言 十进制转换为字符串,不使用库函数。 目的是用于MCU程序中,减少调用库函数产生的时间消耗。 如果你有更好的算法,欢迎留言交流。
char uBinaryToAscii(unsigned int value, char *str)
{
char i;
char num_str[10] = { 0 };
unsigned int quotient;
unsigned char len;
len = 0;
quotient = value / 10;
while (quotient != 0)
{
num_str[len] = value % 10 + '0';
len++;
value = quotient;
quotient = value / 10;
}
if (value != 0)
{
num_str[len] = value + '0';
len++;
}
for (i = 0; i < len; i++)
{
*str = num_str[len-i-1];
str++;
}
return len;
}
char sBinaryToAscii(int value, char *str)
{
char len;
if (value < 0)
{
*str = '-';
str++;
len = uBinaryToAscii(-value, str);
return len + 1;
}
else
{
len = uBinaryToAscii(value, str);
return len;
}
}
int main(void)
{
char num_str1[10] = { '\0' };
char num_str2[10] = { '\0' };
uBinaryToAscii(10624, num_str1);
printf("%s\n", num_str1);
sBinaryToAscii(-10624, num_str2);
printf("%s\n", num_str2);
system("pause");
}
|