octdec(string $octal_string): int|float
| 参数 | 描述 |
|---|---|
octal_string |
必需。规定要转换的八进制字符串。 字符串中只能包含 0-7 的数字,任何其他字符都会导致返回 0(但会发出警告,PHP 8.0+ 抛出 ValueError)。可选的 0 前缀(如 0123)会被忽略。 |
返回 octal_string 的十进制值。由于 PHP 的整数类型是有符号的,很大的八进制数可能会作为浮点数返回。
<?php
echo octdec("10") . "<br>"; // 8
echo octdec("17") . "<br>"; // 15
echo octdec("100") . "<br>"; // 64
echo octdec("0123") . "<br>"; // 83 (忽略前导0)
?>
输出:
8
15
64
83
<?php
$large_oct = "1777777777777777777777"; // 64位最大整数的八进制表示
$result = octdec($large_oct);
echo "octdec('$large_oct') = $result (类型: " . gettype($result) . ")";
?>
输出(64位系统):
octdec('1777777777777777777777') = 9.2233720368548E+18 (类型: double)
<?php
// 将 Linux 权限字符串(如 755)转换为十进制数
function permToDecimal($permOctal) {
return octdec($permOctal);
}
$permString = "755";
$decimal = permToDecimal($permString);
echo "权限 $permString 的十进制值为: $decimal (用于计算掩码等)";
?>
输出:
权限 755 的十进制值为: 493 (用于计算掩码等)
octdec() 会忽略八进制字符串中任何非八进制数字(0-7)的字符,但在 PHP 8.0 之前会产生 E_WARNING 警告;从 PHP 8.0 开始,传入无效字符串会抛出 ValueError 异常。