PHP写二进制响应(PHP write binary response)

2019-06-25 11:52发布

在PHP是有写入二进制数据到响应流的方式,
等的等效(C#ASP)

System.IO.BinaryWriter Binary = new System.IO.BinaryWriter(Response.OutputStream);
Binary.Write((System.Int32)1);//01000000
Binary.Write((System.Int32)1020);//FC030000
Binary.Close();



然后我想能够读取C#应用程序的响应,如

System.Net.HttpWebRequest Request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("URI");
System.IO.BinaryReader Binary = new System.IO.BinaryReader(Request.GetResponse().GetResponseStream());
System.Int32 i = Binary.ReadInt32();//1
i = Binary.ReadInt32();//1020
Binary.Close();

Answer 1:

在PHP中,字符串和字节数组是同一个。 使用pack来创建一个字节数组(串),然后就可以写。 一旦我意识到,生活变得更加轻松。

$my_byte_array = pack("LL", 0x01000000, 0xFC030000);
$fp = fopen("somefile.txt", "w");
fwrite($fp, $my_byte_array);

// or just echo to stdout
echo $my_byte_array;


Answer 2:

通常情况下,我使用chr() ;

echo chr(255); // Returns one byte, value 0xFF

http://php.net/manual/en/function.chr.php



Answer 3:

这是同样的答案我张贴到这一点,类似的问题 。

假设数组$binary是要在严格按照此顺序写入磁盘之前构建的字节数组(就像我的情况单色位图像素),下面的代码为我工作在运行Ubuntu服务器10.04 LTS的AMD1055吨。

我每天都这样回答的,我可以在网络上找到遍历,检查输出(I使用,也可以棚或VI,就像这个答案 ),以确认结果。

<?php
$fp = fopen($base.".bin", "w");
$binout=Array();
for($idx=0; $idx < $stop; $idx=$idx+2 ){
    if( array_key_exists($idx,$binary) )
        fwrite($fp,pack( "n", $binary[$idx]<<8 | $binary[$idx+1]));
    else {
        echo "index $idx not found in array \$binary[], wtf?\n";
    }
}
fclose($fp);
echo "Filename $base.bin had ".filesize($base.".bin")." bytes written\n";
?>


Answer 4:

你可能想包的功能-它可以让你控制权如何你想你的价值观结构为好,即在时间16位或32位,小端与大端等体面的数额



文章来源: PHP write binary response