代码之家  ›  专栏  ›  技术社区  ›  Parveez Ahmed

intval()如何计算前导零的值?[副本]

php
  •  0
  • Parveez Ahmed  · 技术社区  · 6 年前

    我试着理解intval()是如何工作的,其中一个例子是intval(042)=34。我知道默认基数是10,所以为什么它返回34而不是42。零在这个例子中扮演什么角色?

    echo intval(042); //34
    echo intval(42); //42
    
    0 回复  |  直到 12 年前
        1
  •  8
  •   John V.    12 年前

    前导0告诉php将其解释为 octal/base 8 .

    042 34 十进制。

    here .

        2
  •  5
  •   Niet the Dark Absol    12 年前

    前缀为的数字 0 被认为是八进制数(基数8)。 042 8 = 34 10

    事实上,这和 intval . 如果你只是写信 echo 042; 你会得到 34 .

    echo 0xff; 给予 255 .

    而且,从PHP 5.4开始,您甚至可以用二进制编写数字: echo 0b1001; 9 .

        3
  •  1
  •   Smartoop    12 年前

    因为数字前面的0意味着这个数字是一个八进制数,所以试着把42形式的八进制数转换成十进制数,它会给你34