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