文章標題 整數與字串互轉

2021-08-02 22:21:22 字數 1663 閱讀 6734

先來看兩個錯誤的實現

1.

//整數轉換成字串

void inttostring(char* str,int n)

while( n/10 != 0 )//將整數反序放入字串中

str[i++] = n + '0';

str[i] = '\0';//別忘了字串結束標記

i--;//i 指向最後乙個字元的下標

int j = 0,sign=0;

if(str[0] == '-' )

for ( ; j <= i/2 ; j++ )//將字串反序

}

2.

//字串轉換整數

int stringtoint(char* str)//僅僅考慮到正常的輸入,且沒有考慮超出int的範圍。

int result = 0;

bool b = true;

if( *str == '-' || *str == '+' )

while( *str != '\0' )

else

str++;

}return (b ? result : -result);

}

3.

int main ()

下面實現atoi()

int my_atoi(const

char* str)

if (str[i] == '+')

else

if (str[i] == '-')

for (; iif (str[i] < '0' || str[i] > '9')

if (ret > max / 10 || ret == max / 10 && ((str[i] - '0')>max % 10))

ret = ret * 10 + str[i] - '0';

}return ret*sign;

}

//把字串按基數base轉化為long int

long

int my_strtol(const char* str, char** endptr, int base)

if (str[i] == '+')

else

if (str[i] == '-')

if (!(i < n))

if (base == 0 || base == 16)//僅僅考慮了正確情況下的16進製制字串

else

if (str[i] == '0')//注意這裡兩處的base賦值

}for (; i < n; ++i)

if (ret > max / 10 || ret == max / 10 && ((str[i] - '0')>max % 10))

ret = ret * base + str[i] - '0';

}else

if (str[i] >= 'a')

else

if (str[i] >= 'a')

else

}else}}

if (null != endptr)*endptr = (char*)&str[i];

return sign*ret;

}

整數與字串互轉

整數轉換成字串 inttostring.h ifdef cplusplus extern c else dowhile ui num 0 str i index 0 i index int j 0 sign 0 if str 0 for j i index 2 j return str enum i...

C Hex字串與整數的相互轉換

本文轉換的資料是字元型的日期,數字採用了long,如果是int的情況,將convert.toint64 換成convert.toint32應該就可以了。將乙個 長 整數轉為hex字串 string numl 20170416225230666 string hexstr convert.toint6...

字串與int Integer之間互轉

1 如何將字串string轉化為整數int int i integer.parseint str int i integer.valueof my str intvalue 注 字串轉成double,float,long的方法大同小異。2 如何將字串string轉化為integer integer ...