2009-11-14 16 views

risposta

-7
$number = decbin(59); 
echo $number . "\n"; //111011 
$number = bindec($number); 
echo $number . "\n"; //59 

decbin(int $number): Restituisce una stringa contenente una rappresentazione binaria di un dato argomento numero.

bindec(string $bstring): restituisce l'equivalente decimale del numero binario in argomento bstring.

+0

Questa è la risposta alla domanda sbagliata ... concessa, la domanda non era ben scritta, ma si riferisce al tipo "stringa binaria" usato nella sintassi 'b'xxxx'' in PHP, non a un numero binario rappresentato come una stringa di testo. –

15

Il PHP language reference descrive la distinzione tra stringhe Unicode e stringhe binario nativo, indicato con b'this è una stringa binaria'

E non sembra essere un metodo per rappresentare numeri binari.

La notazione "è disponibile a partire da PHP 5.2.1 Tuttavia, avrà effetto solo a partire dalla PHP 6.0.0"

+0

La fonte della tua risposta è in realtà un commento utente nella documentazione PHP: http://php.net/manual/fr/language.types.string.php#93576 Questo non è troppo affidabile. –

+0

Ecco una documentazione più autorevole: https://web.archive.org/web/20090403051843/http://us2.php.net/manual/en/function.is-binary.php –

3

"stringa binaria" è quello che abbiamo in php in questo momento - una sequenza di byte , che (al contrario del linguaggio C) può anche includere un byte nul. Questo è (o sarà, a partire da php6) diverso dalle stringhe Unicode, che sono sequenze di caratteri a due byte.

8

Le stringhe binarie sono state introdotte in PHP 5.2.1 ma ci si aspettava che diventassero efficaci solo a partire da PHP 6. Era un tentativo di distinguere tra stringhe Unicode e binari. Il primo è il nuovo formato di stringa, il secondo è il formato corrente ma è cambiato in notazione "b".

Come forse sapete, PHP 6 è stato abbandonato e il formato della stringa non è cambiato. La notazione "b" è solo una reliquia di quell'epoca.

'foobar' === b'foobar'; // true 


Così oggi (PHP 5 e 7), stringa binaria è l'unico formato stringa. La codifica dei caratteri (che può essere multibyte) viene gestita al "livello superiore", dall'editor di testo, dal browser Web, ecc. È possibile considerare una stringa binaria come una stringa che consiste nell'intervallo 0-255 di valori di byte completi.

Una stringa con caratteri non stampabili e così via, può essere manipolata in PHP come qualsiasi altra stringa, ma la spazzatura verrà visualizzata. Anche alcuni personaggi hanno un significato speciale: \0 contrassegna la terminazione della stringa in C e SQL, ci sono caratteri di controllo, ecc. Quindi, non appena li usi al di fuori di PHP, è probabile che tu abbia dei problemi.

Ad esempio, random_bytes() produce tali stringhe.

+0

Ho problemi con JSON. Ma PHP restituisce casualmente la mia stringa con "b" e talvolta senza. Ecco perché, a volte il mio JSON non è renderizzato e talvolta lo è .. Mi sta facendo impazzire! Se qualcuno è in questo caso, potrebbe essere utile sapere che JSON non gestisce questa "b" – Delphine

+0

Sentiti libero di pubblicare una domanda per il tuo caso. –

Problemi correlati