回应PHP pack()结果......正常吗?

时间:2011-04-28 16:40:00

标签: php binary pack

此代码:

<?php

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

?>

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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