2012-06-13 16 views
15

php में वहाँ की तरह एक तरह से प्रतिक्रिया स्ट्रीम करने के लिए बाइनरी डेटा लिखने के लिए,
(ग # एएसपी)
पीएचपी द्विआधारी प्रतिक्रिया लिखने

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



मैं करूंगा के बराबर की तरह तो है एसी # एप्लिकेशन में प्रतिक्रिया पढ़ने में सक्षम होने के लिए,

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(); 

उत्तर

11

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; 
+0

+1 जिसने मुझे मदद की। मैं जोड़ रहा हूं कि मेरे लिए एक और जवाब के रूप में नीचे क्या काम किया। –

0

आप शायद चाहते pack समारोह - यह आप आप कैसे अपने मूल्यों के रूप में अच्छी तरह से यानी, 16 बिट या एक समय में 32 बिट, थोड़ा संरचित, चाहते हैं पर नियंत्रण का एक सभ्य राशि प्राप्त होती है -इंडियन बनाम बिग-एंडियन, आदि

1

यह वही उत्तर है जिसे मैंने this, similar, question पर पोस्ट किया था।

कि सरणी $binary मान लिया जाये कि एक पहले से निर्माण किया सरणी बाइट्स आप इस सटीक क्रम में डिस्क पर लिखी, नीचे दिए गए कोड एक एएमडी 1055t पर मेरे लिए काम किया ubuntu सर्वर 10.04 LTS चल चाहते हैं कि (मेरे मामले में मोनोक्रोम बिटमैप पिक्सल) की तरह है ।

परिणामों की पुष्टि करने के लिए आउटपुट की जांच करने के लिए मैंने नेट पर पा सकते हैं, मैं आउटपुट की जांच कर रहा हूं (मैंने या तो शेड या vi, like in this answer का उपयोग किया)।

<?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"; 
?> 
संबंधित मुद्दे