decbin()
La funzione decbin() in PHP converte un numero decimale in un numero binario e lo restituisce come string.
La funzione decbin() converte un intero decimale (base 10) nella sua rappresentazione binaria (base 2) e la restituisce come string. È il complementare di bindec(), che esegue la conversione inversa. Questa pagina illustra la sintassi, il valore restituito, le particolarità con i numeri negativi e come formattare l'output.
Sintassi
decbin(int $num): string$num— l'intero decimale da convertire. I float vengono silenziosamente troncati a interi e i boolean vengono convertiti (truediventa1).- Valore restituito — una string di caratteri
0e1. Si tratta di una string, non di un numero, quindi non vengono mai prodotti zeri iniziali e il risultato è sicuro da concatenare o da riempire.
Esempio di base
Assegniamo un valore decimale, lo passiamo a decbin() e stampiamo la string restituita. Il decimale 10 è 1010 in binario (8 + 2).
Conversione di più valori
Poiché la funzione restituisce una semplice string, è possibile formattarla inline. Ecco alcune conversioni comuni:
<?php
echo decbin(0); // 0
echo "\n";
echo decbin(1); // 1
echo "\n";
echo decbin(255); // 11111111
echo "\n";
echo decbin(256); // 100000000
?>255 è il valore più grande che entra in un byte, motivo per cui corrisponde a otto bit 1.
Riempimento dell'output a una larghezza fissa
decbin() non aggiunge mai zeri iniziali, quindi decbin(5) restituisce "101", non "00000101". Quando si vuole una larghezza di bit fissa (ad esempio per visualizzare ogni valore come un byte), è sufficiente racchiuderlo in str_pad():
<?php
$value = 5;
// Pad to 8 bits with leading zeros
echo str_pad(decbin($value), 8, "0", STR_PAD_LEFT); // 00000101
?>Questo funziona proprio perché il valore restituito è una string.
Numeri negativi
PHP non ha una gestione dedicata del bit di segno: un intero negativo viene interpretato come valore senza segno usando il complemento a due sull'intera larghezza degli interi della piattaforma. Su una build a 64 bit, decbin(-1) restituisce 64 uni:
<?php
echo decbin(-1);
// 1111111111111111111111111111111111111111111111111111111111111111
?>Se si ha bisogno di una larghezza fissa e prevedibile, occorre mascherare prima il valore — ad esempio decbin(-1 & 0xFF) produce 11111111 (una vista a 8 bit).
Round‑trip con bindec()
decbin() e bindec() sono funzioni inverse: convertendo un numero in binario e poi di nuovo in decimale si ottiene il valore originale:
<?php
$n = 42;
$binary = decbin($n); // "101010"
$back = bindec($binary); // 42
echo $back; // 42
?>Quando si usa?
- Per ispezionare o visualizzare pattern di bit durante il debug di operazioni bitwise (
&,|,^,<<,>>). - Per costruire rappresentazioni string in binario a scopo didattico, di logging o di semplice codifica dei dati.
- Per lavorare con bitmask di permessi/flag in cui è utile vedere i singoli bit.
Funzioni correlate
PHP fornisce una famiglia di funzioni per la conversione di base. Scegliere quella che corrisponde alla base sorgente e di destinazione:
bindec()— string binaria a decimale.dechex()— decimale a esadecimale.hexdec()— esadecimale a decimale.decoct()— decimale a ottale.octdec()— ottale a decimale.base_convert()— conversione tra basi arbitrarie (2–36).
Conclusione
La funzione decbin() trasforma un intero decimale in una string binaria. Ricordare tre cose: il risultato è una string (quindi usare str_pad() per larghezze fisse), i numeri negativi vengono mostrati in complemento a due sull'intera larghezza degli interi, e bindec() inverte la conversione.