PHP在不使用解包的情况下将正文读取到字节数组中


PHP read body into byte array without using unpack

我正在编写一个在apache2中运行的PHP脚本。我从一个设备中得到一个字节数组,需要将其解析为一个对象。当我执行$body=file_get_contents('php://input’),我得到一根绳子。然后我需要做一个时髦的开箱('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应用程序迁移到许多不同的硬件体系结构,请注意打包/解包操作中的endianes。