这段代码:
<?php
$string = "I love chicken.";
$binary = pack("a15", $string);
echo $binary;
?>
输出“我爱鸡”。这正常吗?它不应该输出一些二进制的乱码吗?
是的,这很正常。您将一个 15 个字符的字符串打包成一个 15 字节的 NULL 填充字符串,因此没有“乱码”(因为您的原始字符串“以这种方式”存储在内存中。)例如,如果您尝试打包整数等
为什么?字符串的“二进制”表示(在单字节字符集中)正是该字符串,因此在这种情况下无需转换任何内容。
如果您将 ASCII 字符串打包为相同长度的 ASCII 字符串,则不会。如果您将 a15 更改为 a16,则 pack 将用空值填充输出,如果您回显,这些值是不可见的,但如果您执行 var_dump()