C51 数字和字符串互相转化 |
您所在的位置:网站首页 › 如何将数组转化为数值函数格式 › C51 数字和字符串互相转化 |
将整数转换成
字符串
,在
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 |