自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下的itoa函數(shù)

系統(tǒng) Linux
linux需要itoa函數(shù),下面我就提供一份跨平臺的itoa函數(shù)。

linux需要itoa函數(shù),下面我就提供一份跨平臺的itoa函數(shù)。

//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;

}

這個(gè)函數(shù)會返回字符串的長度,在某些場合下會很有用。

我測試了一下,這個(gè)函數(shù)大概比MFC自帶的itoa要快20%左右。

(因?yàn)椴恍枰谘h(huán)體內(nèi)判斷if (a > 9)了,所以更快)。

2010/1/8 改進(jìn)版:

//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;

}

改進(jìn):將除法運(yùn)算從有符號整數(shù)改為了無符號整數(shù)。典型速度從240毫秒左右,提高到了180毫秒左右。作為對比,MFC自帶的itoa耗時(shí)是320毫秒左右。

(x86機(jī)器做無符號整數(shù)的除法要更快一些,匯編指令不同)

【編輯推薦】

  1. linux下快速結(jié)束應(yīng)用程序
  2. Linux安全編程:如何編寫安全的應(yīng)用程序
  3. Linux應(yīng)用程序安裝與管理
責(zé)任編輯:趙寧寧 來源: 天極網(wǎng)
相關(guān)推薦

2021-03-25 14:25:24

Linux運(yùn)維Linux系統(tǒng)

2011-04-25 16:35:06

Linux調(diào)用

2017-03-08 15:39:11

Linuxselect函數(shù)

2017-03-16 14:37:05

LinuxShell函數(shù)

2009-11-23 11:51:07

linuxscp

2011-01-18 14:24:03

Linuxsendmail配置

2009-07-06 09:41:18

linux

2010-01-15 10:32:24

LinuxMemcache

2011-03-21 13:01:56

LinuxNagios安裝

2011-01-13 10:50:50

2014-08-01 15:38:37

Linux進(jìn)程管理

2011-03-30 11:04:11

Linuxmrtg

2011-01-07 11:38:36

linux郵件配置

2011-01-18 16:23:23

2011-02-22 13:28:43

Linuxvsftpd配置

2011-12-01 13:03:00

2011-03-09 13:02:15

LinuxLAMP安裝

2010-08-02 14:29:46

LinuxPingICMP

2009-10-15 10:02:39

linuxyum命令詳解

2010-10-08 11:00:40

常用mysql命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號