В PHP что такое двоичная строка (b'xxxx ')? - PullRequest
14 голосов
/ 14 ноября 2009

Что означает b'' ("двоичная строка") в выражении PHP $str=b'xxxxxx';?

Ответы [ 4 ]

16 голосов
/ 14 ноября 2009

Справочник по языку PHP описывает различие между строками Unicode и собственными двоичными строками, обозначенными буквой b 'это двоичная строка'

Это не кажется способом представления двоичных чисел.

Обозначение "доступно начиная с PHP 5.2.1. Однако оно будет действовать только с PHP 6.0.0"

9 голосов
/ 29 марта 2016

Двоичные строки были введены в PHP 5.2.1, но, как ожидается, вступят в силу только начиная с PHP 6. Это была попытка различить Unicode и двоичные строки. Первый - это новый формат строки, последний - текущий формат, но измененный на нотацию "b".

Как вы, возможно, знаете, PHP 6 был заброшен и формат строки не изменился. Обозначение «b» - это просто пережиток той эпохи.

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


Поэтому в настоящее время (PHP 5 и 7) двоичная строка является единственным форматом строки. Кодировка символов (которая может быть многобайтовой) управляется на «верхнем уровне» вашим текстовым редактором, веб-браузером и т. Д. Вы можете считать двоичную строку строкой, состоящей из полного диапазона байтовых значений 0-255.

Строка с непечатаемыми символами и т. Д. Может обрабатываться в PHP как любая другая строка, но вы получите мусор, отображающий ее. Также некоторые символы имеют специальное значение: \0 отмечает завершение строки в C и SQL, есть управляющие символы и т. Д. Поэтому, как только вы используете их вне PHP, вы, вероятно, столкнетесь с проблемами.

Например, random_bytes() создает такие строки.

3 голосов
/ 14 ноября 2009

«двоичная строка» - это то, что мы имеем в php прямо сейчас - последовательность байтов, которая (в отличие от языка C) также может включать нулевой байт. Это (или будет, начиная с php6) отличается от строк Юникода, которые представляют собой последовательности двухбайтовых символов.

0 голосов
/ 14 ноября 2009
$number = decbin(59);
echo $number . "\n"; //111011
$number = bindec($number);
echo $number . "\n"; //59

decbin (int $ number) : Возвращает строку, содержащую двоичное представление заданного аргумента числа.

bindec (строка $ bstring) : возвращает десятичный эквивалент двоичного числа в аргументе bstring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...