0

这段代码:

<?php

$string = "I love chicken.";
$binary = pack("a15", $string);
echo $binary;

?>

输出“我爱鸡”。这正常吗?它不应该输出一些二进制的乱码吗?

4

3 回答 3

4

是的,这很正常。您将一个 15 个字符的字符串打包成一个 15 字节的 NULL 填充字符串,因此没有“乱码”(因为您的原始字符串“以这种方式”存储在内存中。)例如,如果您尝试打包整数等

于 2011-04-28T16:42:59.493 回答
3

为什么?字符串的“二进制”表示(在单字节字符集中)正是该字符串,因此在这种情况下无需转换任何内容。

于 2011-04-28T16:43:18.797 回答
0

如果您将 ASCII 字符串打包为相同长度的 ASCII 字符串,则不会。如果您将 a15 更改为 a16,则 pack 将用空值填充输出,如果您回显,这些值是不可见的,但如果您执行 var_dump()

于 2011-04-28T16:45:12.913 回答