易码技术论坛

 找回密码
 加入易码
搜索
查看: 134666|回复: 6

请高手帮忙(有关数字转字符串)

[复制链接]
发表于 2005-6-9 22:42:00 | 显示全部楼层
...
直接
char string[100];
int number;
sprintf(string,"%d",number);
发表于 2005-6-10 11:57:00 | 显示全部楼层
从效率上来说sprintf太慢了……
发表于 2005-6-10 12:13:00 | 显示全部楼层
sprintf效率不会慢。
因为LavaX的虚拟机特性,任何时候有现成的函数调用都不要考虑自己实现。因为虚拟机函数是用机器语言实现的,效率远比用户自己用LavaX语言实现快。
发表于 2005-6-10 14:13:00 | 显示全部楼层
楼上说的也对,半执行半解释速度肯定不及全机器码的速度
发表于 2005-6-10 14:20:00 | 显示全部楼层
以下是引用leesoft在2005-6-10 12:13:12的发言:

sprintf效率不会慢。

因为LavaX的虚拟机特性,任何时候有现成的函数调用都不要考虑自己实现。因为虚拟机函数是用机器语言实现的,效率远比用户自己用LavaX语言实现快。


忘了说一下,我说的慢是只电脑上的慢,不是指lava
 楼主| 发表于 2005-6-10 14:30:00 | 显示全部楼层
强,谢谢!!!
 楼主| 发表于 2005-6-9 14:10:53 | 显示全部楼层 |阅读模式
integer to array
把num转化成相对应的字符串,把结果放在str指向的字符串中,输出字符串的进制取决于radix,它的值可以是2到36的任何值

int itoa(long num,int str,char radix)
{
char i,ch,neg;
neg=0;
if(num<0){num=abs(num);neg=1;}
else if(num==0)strcpy(str,"0");
while(num) {
i=num%radix;
num=num/radix;
if(i>=0&&i<=9)ch=i|0x30;
if(i>9&&i<36)ch=i+55;
memmove(str+1,str,strlen(str)+1);
*str=ch;
}
if(neg)
  {
  memmove(str+1,str,strlen(str)+1);
  *str='-';
  }
return str;
}

用这个转完之后最后会根一个乱码字符,在模拟器上没有

请问为什么,怎样改进
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-5-6 18:41 , Processed in 0.011270 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表