Practical PHP Programming

非十进制数字系统

虽然你在PHP当中用的大部分都是十进制(decimal),但有时候你可能需要十六进制(hexadecimal)或八进制(octal)的。十六进制用的少,八进制用的更少,但你需要对二者有所了解,万一有一天用到了呢?

正如你所知道的,十进制用0到9十个数字,八进制用0到7八个数字来表示,十六进制用0到9加上a到f来表示。十进制中的3291,与八进制中的6333和十六进制中的CDB相等。然而,如果你直接写$cotalnum = 6333是没有用的。

这是由于PHP默认将6333作为十进制读入,相当于八进制中的14275。为了与十进制相区别,在输入八进制的时候前面需要加上0,也就是为了输入八进制的6333,你需要这么写:

 <?php
    $octalnum = 06333;
    print $octalnum;
?>

代码输出3291,这是由于PHP默认工作在十进制模式下,自动将06333转换为十进制了。

同样的,如果要输入十六进制,需要在前面加上0x,例如,输入十进制的68:

 <?php
    $hexnum = 0x44;
    print $hexnum;
?>

这样,输出的就是68了。八进制在PHP中极少使用。如果你用Unix,可能需要说明权限,这可能是唯一的用处了。十六进制相对常用一些,因为一些哈希算法返回的是十六进制的字符,HTML当中的颜色代码也是用十六进制表示的。