PHP 不使用解包将正文读入字节数组

PHP read body into byte array without using unpack

我正在写一个 PHP 脚本到 apache2 中的 运行。我从需要解析为对象的设备获取字节数组。当我执行 $body = file_get_contents('php://input') 时,我得到一个字符串。然后我需要做一个时髦的 unpack('C*', $body)。现在我有一个数组,在开头有一个额外的元素,来自解包过程。看来我太努力了,做一些看似微不足道的事情。

有没有办法只将正文作为字节数组读取,而跳过所有字符串转换垃圾?加油PHP!它只是一个字节数组!

相信我,信不信由你 PHP 中没有特定的字节容器。您正在以正确的方式进行操作。我已经用这种语言开发了几种二进制算法,当你来自其他语言如 C++ 或 Delphi.

时真的很难理解

在PHP中标准字节数组容器是字符串。例如:

$myVar = file_get_contents("/folder/myfile.bin");

在这种情况下,myVar 充当字符串,也充当字节数组。

更改字节表示的唯一方法是执行打包和解包操作。

$myByteArray= unpack("N*",$myvar); 
for($i = 0; $i < strlen($myByteArray); $i++)
{ 
    echo $myByteArray[$i].'<br/>'; 
}

这里有一些很好的解释:

http://docstore.mik.ua/orelly/webprog/pcook/ch01_14.htm

http://www.codediesel.com/php/unpacking-binary-data/

让我根据我的经验给你最后一个提示:如果你打算将你的 PHP 应用程序迁移到许多不同的硬件架构,请注意 pack/unpack 操作的字节顺序。