Octdec: примеры (PHP)

Преобразование восьмеричных чисел с помощью octdec
Раздел: Преобразование типов/форматов
octdec(string $octal_string): int|float
Функция octdec в PHP

Функция octdec() преобразует строковое представление восьмеричного числа в его десятичный эквивалент. Она применяется при работе с числовыми данными, записанными в восьмеричной системе счисления, например, при обработке прав доступа к файлам в UNIX-системах или специализированных форматах данных.

Аргументы функции
  • octal_string (обязательный): строка, представляющая восьмеричное число. Она может содержать только символы цифр от 0 до 7. Функция игнорирует любые посторонние символы, но преобразование останавливается при первом недопустимом символе.

Функция возвращает десятичное число типа int или float, в зависимости от размера значения.

Краткие примеры использования
<?php
echo octdec('10'); // Преобразование числа 10 в восьмеричной системе
?>
8
<?php
echo octdec('777'); // Восьмеричное 777 соответствует десятичному 511
?>
511
<?php
// Функция игнорирует недопустимые символы, начиная с них
echo octdec('12345abc'); // Преобразует только '12345' (восьмеричное)
?>
5349
Похожие функции в PHP

bindec() — преобразует двоичную строку в десятичное число. Используется для работы с бинарными данными.

hexdec() — преобразует шестнадцатеричную строку в десятичное число. Подходит для обработки цветов, хешей и других шестнадцатеричных значений.

base_convert() — конвертирует числа между произвольными системами счисления (от 2 до 36). Это универсальная альтернатива, когда требуется гибкость.

Альтернативы в других языках

Octdec в Python

print(int('10', 8))  # Указание основания системы счисления
8

Octdec в Javascript

console.log(parseInt('10', 8)); // Аналогичное указание основания
8

Octdec в MySQL

SELECT CONV('10', 8, 10); -- CONV(число, из_основания, в_основание)
8

Основное отличие PHP-функции — она предназначена только для восьмеричной системы, тогда как в других языках часто используются универсальные методы с параметром основания.

Типичные ошибки

Недопустимые символы: функция прекращает преобразование при встрече символов не из диапазона 0-7.

<?php
echo octdec('89'); // '8' не является восьмеричной цифрой, преобразуется только '8'
?>
0

Переполнение целочисленного типа: для больших чисел результат может выходить за пределы int, возвращая float.

<?php
var_dump(octdec('17777777777')); // Число превышает размер int на 32-битных системах
?>
float(2147483647)
Изменения в последних версиях PHP

В PHP 8.0 поведение функции octdec() было уточнено: теперь она корректно обрабатывает входные данные, строго следуя остановке на первом недопустимом символе. Ранее в некоторых случаях могли возникать неявные преобразования.

Начиная с PHP 7.4, выдача предупреждений для недопустимых символов стала более последовательной.

Расширенные примеры
Обработка прав до UNIX-файлам
Пример php
<?php
$perms = '0755'; // Строка с ведущим нулём (восьмеричное представление)
$decimal = octdec(substr($perms, 1)); // Убираем ведущий нуль для octdec
echo $decimal; // Десятичное представление прав доступа
?>
493
Работа с большими числами
Пример php
<?php
// Восьмеричное число, соответствующее максимальному 32-битному целому со знаком
$large = octdec('17777777777');
var_dump($large);
?>
float(2147483647)
Преобразование массива восьмеричных чисел
Пример php
<?php
$octals = ['12', '7', '20'];
$decimals = array_map('octdec', $octals);
print_r($decimals);
?>
Array
(
    [0] => 10
    [1] => 7
    [2] => 16
)
Сравнение с base_convert
Пример php
<?php
$oct = '77';
echo octdec($oct) . ' ' . base_convert($oct, 8, 10); // Одинаковый результат
?>
63 63

PHP octdec function comments

En
Octdec Octal to decimal