在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();
在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;
通常情况下,我使用chr()
;
echo chr(255); // Returns one byte, value 0xFF
http://php.net/manual/en/function.chr.php
这是同样的答案我张贴到这一点,类似的问题 。
假设数组$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";
?>
你可能想包的功能-它可以让你控制权如何你想你的价值观结构为好,即在时间16位或32位,小端与大端等体面的数额