В PHP, что такое двоичная строка (b'xxxx ')?
Что означает b''
( "двоичная строка" ) в выражении PHP $str=b'xxxxxx';
?
Ответы
Ответ 1
$number = decbin(59);
echo $number . "\n"; //111011
$number = bindec($number);
echo $number . "\n"; //59
decbin (int $number): возвращает строку, содержащую двоичное представление аргумента заданного числа.
bindec (string $bstring): возвращает десятичный эквивалент двоичного числа в аргументе bstring.
Ответ 2
Справочник по языку PHP описывает различие между строками Unicode и встроенными двоичными строками, обозначаемое b'this - это двоичная строка '
Это не похоже на метод представления двоичных чисел.
Обозначение "доступно с PHP 5.2.1, но оно будет иметь эффект только с PHP 6.0.0"
Ответ 3
Двоичные строки были введены в 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()
создает такие строки.
Ответ 4
"двоичная строка" - это то, что мы имеем в php прямо сейчас - последовательность байтов, которая (в отличие от языка C) также может включать в себя nul байт. Это (или будет, как и php6) отличаться от строк unicode, которые являются последовательностями двухбайтовых символов.