将整数转换成字符串,在C51中你如何做?

来源:互联网 发布:淘宝app图标素材 编辑:程序博客网 时间:2024/05/29 08:08

这个问题似乎很简单,keilC中也用sprintf()函数嘛,用就行了。但对于“寸土寸金”的单片机来说,问题可没那么简单。

看看我代码中这句弃之不用的代码吧:

//sprintf(sFileLen,"%d",fileLen*128);print(sFileLen); //使用这个库函数,体积一下增加2563. 我的程序空间马上溢出不够用了。 OMG! C51库函数,伤不起啊

能自己写就自己写,尽量不用库函数吧。谱太大,用不起啊。下面这个函数就是类似sprintf()的作用。为了节省几个字节,结果就直接发出来了,不必存储到uchar[]中了。

// 向串口发送一个整数,支持0-65535,如 uint=8189,发送的是'8'  '1'  '8'  '9'
void serial_put_uint(unsigned int number)
{
      unsigned int i;
      unsigned int nTmp;

     //感觉这写法怪怪的吗?干嘛不for(i=1;i<5;i++) 因为这样不需要使用库函数pow()
    
for(i=10000;i>=1;i=i/10)

      {
            nTmp = number/i;
            if(nTmp >=1 ) serial_put_char((unsigned char)(nTmp%10 + 0x30));
      }
}

 

原创粉丝点击