Этот код:
<?php $string = "I love chicken."; $binary = pack("a15", $string); echo $binary; ?>
Выходы "Я люблю курицу".Это нормально?Разве он не должен выдавать какой-то бибаршийский бред?
Да, это нормально. Вы упаковываете 15-символьную строку в 15-байтовую NULL-дополняемую строку, так что нет никакого "тарабарщины" (потому что твоя оригинальная строка хранится в памяти "таким образом".) Вы бы увидели бред Например, вы пытались упаковать целые числа и т. д.
Почему? «Двоичное» представление строки (в однобайтовой кодировке) является именно этой строкой, поэтому в этом случае нет необходимости что-либо преобразовывать.
Нет, если вы упаковываете строку ASCII как строку ASCII той же длины. Если вы измените a15 на a16, то pack будет заполнять вывод значениями NULL, которые не видны, если вы выводите эхо, но отображаются, если вы выполняете var_dump ()