PHP octdec() 函数

定义和用法

octdec() 函数将八进制字符串转换为十进制数。

提示:如需将十进制转换为八进制,请使用 decoct() 函数。

语法

octdec(string $octal_string): int|float
参数 描述
octal_string 必需。规定要转换的八进制字符串。
字符串中只能包含 0-7 的数字,任何其他字符都会导致返回 0(但会发出警告,PHP 8.0+ 抛出 ValueError)。可选的 0 前缀(如 0123)会被忽略。

返回值

返回 octal_string 的十进制值。由于 PHP 的整数类型是有符号的,很大的八进制数可能会作为浮点数返回。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+

示例

示例 1:基本用法

<?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

示例 2:处理大数

<?php
$large_oct = "1777777777777777777777"; // 64位最大整数的八进制表示
$result = octdec($large_oct);
echo "octdec('$large_oct') = $result (类型: " . gettype($result) . ")";
?>

输出(64位系统):

octdec('1777777777777777777777') = 9.2233720368548E+18 (类型: double)

示例 3:实际应用 - 解析 Linux 文件权限

<?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 异常。
  • 如果转换结果超出 PHP 整数的最大值(在 32 位系统上约为 2147483647,在 64 位系统上约为 9.22e18),则会返回一个浮点数。
  • 该函数不识别 "0o" 前缀(某些语言中使用),只识别数字字符本身,前导零不影响结果。
  • 传入空字符串会导致返回 0(并可能产生警告/异常)。