W3docs

bindec()

Функция bindec() в PHP преобразует двоичное число в десятичное. Узнайте синтаксис, примеры и особенности работы.

Функция bindec() преобразует строку двоичных цифр (основание 2) в соответствующее десятичное значение (основание 10). Она является обратной к decbin() и используется всякий раз, когда нужно прочитать двоичные данные — маску прав доступа, флаг бита, значение, разобранное из текста — и получить обычное целое число для дальнейшей работы.

Синтаксис

bindec(string $binary_string): int|float
  • $binary_string — двоичное число для преобразования, передаётся в виде строки из 0 и 1 (например "1010").
  • Возвращаемое значение — десятичный эквивалент. Возвращается int, если значение укладывается в диапазон целых чисел PHP, и float для очень больших двоичных чисел, которые иначе вызвали бы переполнение.

Простой пример

php— editable, runs on the server

Двоичная строка "1010" равна 1×8 + 0×4 + 1×2 + 0×1 = 10, поэтому bindec() возвращает 10.

Почему нужно передавать строку, а не число?

Типичная первая ошибка — написать bindec(1010) без кавычек. Для небольших значений это случайно работает, но литерал вроде 0101 PHP интерпретирует как восьмеричное число ещё до того, как bindec() его получит, а большие двоичные литералы теряют ведущие нули. Всегда передавайте двоичное значение как строку в кавычках, чтобы цифры поступали в функцию в неизменном виде:

<?php
echo bindec("00001111"); // 15 — leading zeros are fine in a string
?>

Как обрабатываются недопустимые символы

bindec() понимает только 0 и 1. Любой другой символ молча отбрасывается (в PHP 8.1+ это вызывает уведомление об устаревании), поэтому результат может быть не тем, что вы ожидаете:

<?php
echo bindec("1012"); // 5 — the "2" is ignored, leaving "101" = 5
echo "\n";
echo bindec("");     // 0 — an empty string is treated as zero
?>

Поскольку функция молча игнорирует ошибки, перед преобразованием проверяйте вводимые пользователем данные с помощью preg_match('/^[01]+$/', $value).

Обратное преобразование с decbin()

bindec() и decbin() являются взаимно обратными функциями, что удобно для анализа или построения битовых масок:

<?php
$decimal = 42;

$binary = decbin($decimal);  // "101010"
$back    = bindec($binary);  // 42

echo "$decimal -> $binary -> $back"; // 42 -> 101010 -> 42
?>

Практический пример: чтение битовых флагов

Двоичные строки — удобный способ описания набора параметров включено/выключено. Преобразование в десятичное число позволяет проверять отдельные биты с помощью побитового оператора AND:

<?php
define('READ',    bindec("100")); // 4
define('WRITE',   bindec("010")); // 2
define('EXECUTE', bindec("001")); // 1

$permissions = bindec("110"); // READ + WRITE = 6

echo ($permissions & WRITE)   ? "can write\n"   : "cannot write\n";   // can write
echo ($permissions & EXECUTE) ? "can execute\n" : "cannot execute\n"; // cannot execute
?>

Связанные функции преобразования

ФункцияПреобразует
decbin()десятичное → двоичная строка
hexdec()шестнадцатеричное → десятичное
octdec()восьмеричное → десятичное
base_convert()между любыми двумя основаниями (2–36)

Заключение

bindec() преобразует двоичную строку в десятичное число, возвращая int (или float для очень больших значений). Помните: передавайте значение как строку в кавычках, предварительно проверяйте его, поскольку небинарные символы молча игнорируются, и используйте decbin() для преобразования в обратном направлении. Владея этими инструментами, вы сможете без труда работать с битовыми масками, флагами и любыми данными в двоичном представлении.

Практика

Практика
Что делает функция bindec() в PHP?
Что делает функция bindec() в PHP?
Was this page helpful?