2010-12-12 8 views
5

PHP में, मेरे पास 0-65535 के मानों के साथ कुछ पूर्णांक चर हैं। मुझे स्ट्रिंग "1281" प्रिंटिंग जैसे कच्चे बाइनरी मान जैसे अक्षरों के मुद्रित अनुक्रम के रूप में सीधे इसे गूंज/प्रिंट करने की आवश्यकता नहीं है। इसके अलावा मुझे इसकी आवश्यकता है ताकि आउटपुट में भेजे गए द्विआधारी पूर्णांक हमेशा 2 बाइट्स हों (यदि आवश्यक हो तो शून्य बाइट भेजे गए ताकि यह हमेशा 2 बाइट्स हो)। मैं php में यह कैसे करूँ?PHP में उत्पादन कच्चे बाइनरी पूर्णांक

+1

कच्चे बाइनरी मान एक सर्किट के अंदर उच्च और निम्न बिजली वोल्टेज का एक सेट है। इंसानों को समझने के तरीके में आप उन वोल्टेज का प्रतिनिधित्व कैसे करना चाहेंगे? आप वास्तव में एक स्ट्रिंग प्रतिनिधित्व मुद्रित नहीं करना चाहते हैं, आप बस संख्या के एक अलग स्ट्रिंग प्रतिनिधित्व मुद्रित करना चाहते हैं। आप आधार 10 के बजाय बेस 2 में लिखे गए नंबर को देखने के लिए कह रहे हैं। दोनों वोल्टेज के स्ट्रिंग प्रस्तुतियां हैं। –

+3

@ डैन, उन्होंने कच्चे माल की मांग की, कच्चे बिजली की मांग नहीं की। उन्होंने कभी नहीं कहा कि वह एक स्ट्रिंग नहीं चाहते थे, बस वह एएससीआईआई अंकों के पात्रों की एक स्ट्रिंग नहीं चाहते थे। –

+1

@ डैन: वह मूल रूप से PHP के इस बिट के बराबर चाहता है: 'fwrite (और some_int16_value, sizeof (int16_t), 1, fp) '। कम से कम यह मेरे लिए इस तरह से पढ़ता है। –

उत्तर

3

हाँ, यह संभव है, pack का उपयोग करें।

5

म्यू के जवाब पर विस्तार से बता दें आप चाहते हैं:

pack("S", $num)); 

उदा .:

file_put_contents("test65535.bin", pack("S", 65535)); 
file_put_contents("test100.bin", pack("S", 100)); 
file_put_contents("test0.bin", pack("S", 0)); 

hexdump test65535.bin 
0000000 ffff 
0000002 

hexdump test100.bin 
0000000 0064 
0000002 

hexdump test0.bin 
0000000 0000 
0000002