Linux下的itoa函数

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

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应用程序安装与管理
责任编辑:赵宁宁 来源: 天极网
相关推荐

2021-03-25 14:25:24

Linux运维Linux系统

2011-04-25 16:35:06

Linux调用

2017-03-08 15:39:11

Linuxselect函数

2017-03-16 14:37:05

LinuxShell函数

2011-01-07 11:38:36

linux邮件配置

2011-02-22 13:28:43

Linuxvsftpd配置

2011-03-30 11:04:11

Linuxmrtg

2011-12-01 13:03:00

2011-01-18 16:23:23

2009-11-23 11:51:07

linuxscp

2011-03-21 13:01:56

LinuxNagios安装

2010-01-15 10:32:24

LinuxMemcache

2014-08-01 15:38:37

Linux进程管理

2009-07-06 09:41:18

linux

2011-01-18 14:24:03

Linuxsendmail配置

2011-01-13 10:50:50

2017-01-13 15:45:05

Linuxfork函数详解

2009-07-20 17:17:54

Shell函数ASP.NET环境

2011-03-09 09:25:53

RedHatLinuxLAMP

2009-12-01 18:41:08

SUSE Linux
点赞
收藏

51CTO技术栈公众号