PHP将body读入字节数组而不使用unpack

时间:2015-02-19 07:00:23

标签: php arrays bytearray

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

有没有办法只将字体作为字节数组读取,并跳过所有的字符串转换垃圾?来吧PHP!它只是一个字节数组!

1 个答案:

答案 0 :(得分:1)

相信我,相信与否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应用程序迁移到许多不同的硬件架构,请关注打包/解包操作的结束。