【游戏算法】编码实现字符串转化为数字
5916
编码实现函数 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小时内进行修改或删除。