3.整数、浮点数转换成字符串

在一些应用中,需要将整数、浮点数转换成字符串,用于显示或者通过串口进行发送,常用的做法是使用sprintf函数对数据进行格式化输出,但是这样会导致内存的过量占用,在小容量的51单片机中或者DSP中会占用不小的内存,为接下来的开发带来难度,现在提供一个函数,可以直接调用将整数、浮点数转换成字符串。

为了更加好的兼容DSP,对程序进行一定调整。

1.整数转换成字符串

//整数转换成字符串,参数:生成的数组str,待转换的整数Num,整数长度为len
void Num2Str(unsigned char str[],int Num,unsigned char len)//显示数字,长度为len
{
    unsigned char i=0;
    while(len--)
    {
        str[len] = Num%10+0x30;
        Num = Num/10;
        i++;
    }
    str[i++] = '\0';
}

使用上列函数即可将整数自动转换成字符串,生成的字符串存在数组str中,其中的参数Num为待转换的整数,len为整数长度。

示例:

unsigned char str[20];
Num2Str(str,123,4);

结果:str = “0123”;//结尾带结束符

2.浮点数转换成字符串

//m^n函数
unsigned long num_pow(unsigned char m,unsigned char n)
{
    unsigned long result=1;
    while(n--)result*=m;
    return result;
}

//浮点数转换成字符串,参数:生成的数组str,待转换的浮点数floa,整数长度为len1,小数长度为len2
void Float2Str(unsigned char str[],double floa,unsigned char len1,unsigned char len2)
{
    unsigned char i=0,j=0;
    unsigned int zhengshu = floa;
    unsigned int xiaoshu = (floa-zhengshu)*num_pow(10,len2);
    while(len1--)
    {
        str[len1] = zhengshu%10+0x30;
        zhengshu = zhengshu/10;
        i++;
    }
    str[i] = '.';
    while(len2--)
    {
        str[i+len2+1] = xiaoshu%10+0x30;
        xiaoshu = xiaoshu/10;
        j++;
    }
    str[i+j+1] = '\0';
}

使用上列函数即可将浮点数自动转换成字符串,生成的字符串存在数组str中,其中的参数floa为待转换的浮点数,len1为整数长度,小数长度为len2。

示例:

unsigned char str[20];
Float2Str(str,123.45,4,1);

结果:str = “0123.4”;//结尾带结束符

3.说明

程序没有进行优化,肯定有更好的写法,但是绝对是可行的方法,欢迎和大家一起讨论。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值