【游戏算法】编码实现字符串转化为数字
6368
编码实现函数 atoi(),设计一个程序,把一个字符串转化为一个整型数值。
例如数字:“5486321”,转化成字符:5486321。
【答案】
int myAtoi(const char * str)
{
int num = 0; //保存转换后的数值
int isNegative = 0; //记录字符串中是否有负号
int n = 0;
char *p = str;
if (p == NULL) //判断指针的合法性
{
return -1;
}
while (*p++ != '\0') //计算数字符串度
{
n++;
}
p = str;
if (p[0] == '-') //判断数组是否有负号
{
isNegative = 1;
}
char temp = '0';
for (int i = 0; i < n; i++)
{
char temp = *p++;
if (temp > '9' || temp < '0') //滤除非数字字符
{
continue;
}
if (num != 0 || temp != '0') //滤除字符串开始的 0 字符
{
temp -= 0x30; //将数字字符转换为数值
num += temp *int(pow(10, n - 1 - i));
}
}
if (isNegative) //如果字符串中有负号,将数值取反
{
return (0 - num);
}
else
{
return num; //返回转换后的数值
}
}注意:此段代码只是实现了十进制字符串到数字的转化,读者可以自己去实现 2 进制,8 进制,10 进制,16 进制的转化。
特别声明:本文仅供交流学习 , 版权归属原作者,并不代表游民部落赞同其观点和对其真实性负责。若文章无意侵犯到您的知识产权,损害了您的利益,烦请与我们联系vmaya_gz@126.com,我们将在24小时内进行修改或删除。























