代码之家  ›  专栏  ›  技术社区  ›  PHPFan

为什么整数数据类型十六进制、八进制和二进制被转换为十进制,然后显示在浏览器中?

  •  1
  • PHPFan  · 技术社区  · 8 年前

    我正在使用PHP 7.1.11

    我有以下PHP代码:

    <?php
    $a = 0123; // an octal number (equivalent to 83 decimal)
    $b = 0x1A; // a hexadecimal number (equivalent to 26 decimal)
    $c = 0b11111111; // a binary number (equivalent to 255 decimal)
    
    var_dump($a); //Output : int(83) int(26) int(255) 
    var_dump($b); //Output : int(26) int(255)
    var_dump($c); //Output : int(255)
    ?>
    

    我的问题是,为什么整数数据类型(八进制、十六进制和二进制)中包含的数据被转换为十进制,然后与新的数据类型一起显示在浏览器中 整数

    为什么它不显示变量的原始值,也不显示其原始数据类型?

    为什么会有转换步骤,谁会这样做是出于什么原因?

    如果我们采用其他数据类型,比如布尔型、浮点型、字符串型,则不会发生类似的情况。一切正常,那么为什么这些整数数据类型会发生这种奇怪的事情呢?

    1 回复  |  直到 8 年前
        1
  •  3
  •   deceze    8 年前

    只有一种(整数)数字,数字的格式完全不重要。价值观 052 , 42 0x2A 它们都表示完全相同的值。PHP不记得数字是如何创建的;它不会存储这些信息,因为这些信息是无用的,只会浪费存储的空间。二进制、八进制和十六进制符号仅仅是方便的启示,允许您使用最适合上下文的符号来表示数字;这一切都被解析为 int 具有相同的值,然后默认以十进制表示法输出。