C51 数字和字符串互相转化

您所在的位置:网站首页 如何将数组转化为数值函数格式 C51 数字和字符串互相转化

C51 数字和字符串互相转化

2024-07-14 17:29| 来源: 网络整理| 查看: 265

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

这个问题似乎很简单,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=1;i=i/10)

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

http://blog.csdn.net/dreamfine/article/details/7627143

 

在C51中如何将数字转换成字符串的问题

昨天试验通过了关于 sprintf 函数的使用,发现,他太占空间了,几乎点了900多的空间,总空间才5K 有点得不偿失,于是,我自己写了一个小的函数将此问题解决了!

?void num2char(int num,unsigned char temp[3]) 一定要注意这里的字符串长度。 { int i; i = 2;    // 与这里的字符串长度相对应,从最后一个字符位开始。

do{     temp[i] = num%10+'0';       //不太清楚,为什么这里加上 ‘0’ 就是字符了呢!

    num/=10;

i = i -1;         } while(i>=0);

}

 

已试验通过。如 num2char(45,s[3]), 得到的结果是 045.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3