Linux下的itoa函数
创始人
2024-06-20 08:41:18
0

linux需要itoa函数,下面我就提供一份跨平台的itoa函数。

//return the length of result string. support only 10 radix for easy use and better performance

int my_itoa(int val, char* buf)

{

const int radix = 10;

char* p;

int a; //every digit

int len;

char* b; //start of the digit char

char temp;

p = buf;

if (val < 0)

{

*p++ = '-';

val = 0 - val;

}

b = p;

do

{

a = val % radix;

val /= radix;

*p++ = a + '0';

} while (val > 0);

len = (int)(p - buf);

*p-- = 0;

//swap

do

{

temp = *p;

*p = *b;

*b = temp;

--p;

++b;

} while (b < p);

return len;

}

这个函数会返回字符串的长度,在某些场合下会很有用。

我测试了一下,这个函数大概比MFC自带的itoa要快20%左右。

(因为不需要在循环体内判断if (a > 9)了,所以更快)。

2010/1/8 改进版:

//return the length of result string. support only 10 radix for easy use and better performance

int my_itoa(int val, char* buf)

{

const unsigned int radix = 10;

char* p;

unsigned int a; //every digit

int len;

char* b; //start of the digit char

char temp;

unsigned int u;

p = buf;

if (val < 0)

{

*p++ = '-';

val = 0 - val;

}

u = (unsigned int)val;

b = p;

do

{

a = u % radix;

u /= radix;

*p++ = a + '0';

} while (u > 0);

len = (int)(p - buf);

*p-- = 0;

//swap

do

{

temp = *p;

*p = *b;

*b = temp;

--p;

++b;

} while (b < p);

return len;

}

改进:将除法运算从有符号整数改为了无符号整数。典型速度从240毫秒左右,提高到了180毫秒左右。作为对比,MFC自带的itoa耗时是320毫秒左右。

(x86机器做无符号整数的除法要更快一些,汇编指令不同)

【编辑推荐】

  1. linux下快速结束应用程序
  2. Linux安全编程:如何编写安全的应用程序
  3. Linux应用程序安装与管理

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...