W3docs

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 (true diventa 1).
  • Valore restituito — una string di caratteri 0 e 1. 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

php— editable, runs on the server

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:

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.

Esercitazione

Pratica
Qual è lo scopo della funzione decbin() in PHP?
Qual è lo scopo della funzione decbin() in PHP?
Was this page helpful?