W3docs

bindec()

Aprenda a usar a função bindec() no PHP para converter números binários em decimais, com exemplos práticos e dicas de uso.

A função bindec() converte uma string de dígitos binários (base 2) no seu valor decimal (base 10). Ela é o inverso de decbin(), e é a função que você utiliza sempre que precisa ler dados binários — uma máscara de permissão, um sinalizador de bit, um valor interpretado de texto — e necessita de um inteiro comum para trabalhar.

Sintaxe

bindec(string $binary_string): int|float
  • $binary_string — o número binário a converter, passado como uma string de 0s e 1s (por exemplo "1010").
  • Valor de retorno — o equivalente decimal. É um int quando o valor cabe no intervalo de inteiros do PHP, e um float para números binários muito grandes que, de outra forma, causariam overflow.

Um exemplo básico

php— editable, runs on the server

A string binária "1010" equivale a 1×8 + 0×4 + 1×2 + 0×1 = 10, portanto bindec() retorna 10.

Por que passar uma string e não um número?

Um erro comum é escrever bindec(1010) sem aspas. Isso funciona por acidente em valores pequenos, mas um literal como 0101 é interpretado pelo PHP como um número octal antes mesmo que bindec() o receba, e literais binários grandes perdem os zeros à esquerda. Sempre passe o valor binário como uma string entre aspas para que os dígitos cheguem intactos:

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

Como caracteres inválidos são tratados

bindec() entende apenas 0 e 1. Qualquer outro caractere é descartado silenciosamente (isso gera um aviso de depreciação no PHP 8.1+), e o resultado não é o esperado:

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

Como a função falha silenciosamente, valide a entrada fornecida pelo usuário com preg_match('/^[01]+$/', $value) antes de converter.

Conversão bidirecional com decbin()

bindec() e decbin() são funções inversas, o que é útil para inspecionar ou construir máscaras de bits:

<?php
$decimal = 42;

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

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

Uso prático: leitura de sinalizadores de bit

Strings binárias são uma forma simples de descrever um conjunto de opções ligadas/desligadas. Converter para decimal permite testar bits individuais com o operador AND bit a bit:

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

Funções de conversão relacionadas

FunçãoConverte
decbin()decimal → string binária
hexdec()hexadecimal → decimal
octdec()octal → decimal
base_convert()entre quaisquer duas bases (2–36)

Conclusão

bindec() transforma uma string binária em um número decimal, retornando um int (ou um float para valores muito grandes). Lembre-se de passar o valor como uma string entre aspas, validá-lo primeiro porque caracteres não binários são ignorados silenciosamente, e combiná-lo com decbin() quando precisar converter na direção oposta. Com essas ferramentas à mão, você pode trabalhar com conforto com máscaras de bits, sinalizadores e quaisquer dados armazenados em base 2.

Prática

Prática
O que a função bindec() do PHP faz?
O que a função bindec() do PHP faz?
Was this page helpful?