20 votes

En PHP, qu'est-ce qu'une chaîne binaire (b'xxxx') ?

Qu'est-ce que b'' ("chaîne binaire") signifie dans l'instruction PHP $str=b'xxxxxx'; ?

16voto

pavium Points 7845

Le PHP référence linguistique décrit la distinction entre les chaînes unicode et les chaînes binaires natives, désignées par b 'ceci est une chaîne binaire'.

Il n'a pas semblent être une méthode de représentation des nombres binaires.

La notation "est disponible depuis PHP 5.2.1. Cependant, elle n'aura d'effet qu'à partir de PHP 6.0.0".

16voto

Double Gras Points 2304

Les chaînes binaires ont été introduites en PHP 5.2.1 mais ne devaient être effectives qu'à partir de PHP 6. C'était une tentative de distinguer les chaînes Unicode des chaînes binaires. Le premier étant le nouveau format de chaîne, le second étant le format actuel mais changé en notation "b".

Comme vous le savez peut-être, PHP 6 a été abandonné et le format des chaînes de caractères n'a pas changé. La notation "b" est juste une relique de cette époque.

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

De nos jours (PHP 5 et 7), la chaîne binaire est le seul format de chaîne. L'encodage des caractères (qui peuvent être multi-octets) est géré au "niveau supérieur", par votre éditeur de texte, votre navigateur web, etc. Vous pouvez considérer qu'une chaîne binaire est une chaîne constituée de la gamme complète des valeurs d'octets 0-255.

Une chaîne de caractères non imprimables peut être manipulée en PHP comme n'importe quelle autre chaîne de caractères, mais vous obtiendrez des erreurs d'affichage. De plus, certains caractères ont une signification particulière : \0 marque la terminaison des chaînes en C et en SQL, il y a des caractères de contrôle, etc. Ainsi, dès que vous les utilisez en dehors de PHP, vous risquez de rencontrer des problèmes.

Par exemple, random_bytes() produit de telles chaînes.

3voto

user187291 Points 28951

Une "chaîne binaire" est ce que nous avons en php actuellement - une séquence d'octets, qui (contrairement au langage C) peut également inclure un octet nul. Ceci est (ou sera, à partir de php6) différent des chaînes unicode, qui sont des séquences de caractères de deux octets.

-9voto

jitter Points 35805
$number = decbin(59);
echo $number . "\n"; //111011
$number = bindec($number);
echo $number . "\n"; //59

decbin(int $number) : Renvoie une chaîne contenant une représentation binaire de l'argument numérique donné.

bindec(chaîne $bstring) : Renvoie l'équivalent décimal du nombre binaire dans l'argument bstring.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X