W3docs

bindec()

La funzione bindec() in PHP converte una stringa binaria nel corrispondente valore decimale. Scopri sintassi, esempi e casi d'uso pratici.

La funzione bindec() converte una stringa di cifre binarie (base 2) nel corrispondente valore decimale (base 10). È l'inversa di decbin() ed è la funzione a cui ricorrere ogni volta che si legge un dato binario — una maschera di permessi, un flag di bit, un valore estratto da testo — e si ha bisogno di un numero intero ordinario con cui lavorare.

Sintassi

bindec(string $binary_string): int|float
  • $binary_string — il numero binario da convertire, passato come string di 0 e 1 (ad esempio "1010").
  • Valore restituito — l'equivalente decimale. È un int quando il valore rientra nell'intervallo degli interi di PHP, e un float per numeri binari molto grandi che altrimenti causerebbero un overflow.

Un esempio di base

php— editable, runs on the server

La stringa binaria "1010" corrisponde a 1×8 + 0×4 + 1×2 + 0×1 = 10, quindi bindec() restituisce 10.

Perché passare una string e non un numero?

Un errore comune dei principianti è scrivere bindec(1010) senza virgolette. Questo funziona per pura coincidenza con valori piccoli, ma un letterale come 0101 viene interpretato da PHP come numero ottale ancor prima che bindec() lo veda, e i letterali binari grandi perdono gli zeri iniziali. Passa sempre il valore binario come string tra virgolette, in modo che le cifre arrivino intatte:

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

Come vengono gestiti i caratteri non validi

bindec() riconosce solo 0 e 1. Qualsiasi altro carattere viene ignorato silenziosamente (questo genera un avviso di deprecazione in PHP 8.1+), quindi il risultato non sarà quello atteso:

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

Poiché la funzione fallisce in silenzio, valida prima l'input fornito dall'utente con preg_match('/^[01]+$/', $value) prima di convertirlo.

Round-trip con decbin()

bindec() e decbin() sono funzioni inverse, utili per ispezionare o costruire maschere di bit:

<?php
$decimal = 42;

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

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

Un uso pratico: lettura dei flag di bit

Le stringhe binarie sono un modo semplice per descrivere un insieme di opzioni attive/disattive. Convertirle in decimale consente di testare i singoli bit con l'operatore 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
?>

Funzioni di conversione correlate

FunzioneConverte
decbin()decimale → stringa binaria
hexdec()esadecimale → decimale
octdec()ottale → decimale
base_convert()tra due qualsiasi basi (2–36)

Conclusione

bindec() trasforma una stringa binaria in un numero decimale, restituendo un int (o un float per valori molto grandi). Ricorda di passare il valore come string tra virgolette, di validarlo prima perché i caratteri non binari vengono ignorati silenziosamente, e di abbinarla a decbin() quando occorre convertire nella direzione opposta. Con questi strumenti a disposizione puoi lavorare agevolmente con maschere di bit, flag e qualsiasi dato memorizzato in base 2.

Esercitazione

Pratica
Cosa fa la funzione bindec() in PHP?
Cosa fa la funzione bindec() in PHP?
Was this page helpful?