在PHP中实现C的atoi()

时间:2012-11-15 01:36:25

标签: php c algorithm atoi

C,atoi()中有一个函数,用PHP实现;

  • $ string ='5467'; //函数应该返回5467作为整数

所以这就是我找到的(its implementation in C

int myatoi(const char *string) {
    int i;
    i=0;
    while(*string) {
        i = (i<<3) + (i<<1) + (*string - '0');
        string++;
    }

3 个答案:

答案 0 :(得分:4)

除非我误解了这个问题:

function atoi($string)
{
  return (int) $string;
}

这听起来像是一个技巧问题,看看你是否理解php作为一种松散类型语言的概念。所以,是的,这是公平的。

答案 1 :(得分:3)

我不知道PHP,但如果要知道你是否可以编写算法,我可以展示我在C中如何处理这个问题。(这里未经测试的代码。)

int atoi(char *s)
{
    int val = 0;
    while (*s)
    {
        val *= 10;
        val += (*s) - '0';
        s++;
    }
    return val;
}

答案 2 :(得分:2)

真的只是:

function myatoi($s) {
    return (int) $s;
}

我认为他们正在寻找你的解决问题的技巧。一位优秀的高级开发人员可能会提出以下有趣的观察结果:

  • 如果数据无效,我的函数应该返回什么(例如:“a”)。 0?抛出异常?您的C示例将返回一些垃圾(即使是“15a”,标准规定您应该返回15)。
  • 您的C示例无法处理负数。
  • 如果数字不适合整数,结果应该是什么?你的C例子只会溢出(这在BT中完全有效)。