先來看兩個錯誤的實現
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 ...