देखें Array#pack:, String#unpack
पर एक नजर है।
[1024].pack("n")
इस नेटवर्क से आदेश बाइट क्रम \x04\x00
के रूप में संख्या पैक।
यह काम करता है कि प्रत्येक बाइट 8 बाइनरी बिट्स है। बाइनरी में 1024 10000000000
है। यदि हम इसे 8 (8 बिट्स प्रति बाइट) के ऑक्टेट में तोड़ते हैं, तो हमें मिलता है: 00000100 00000000
।
एक बाइट प्रतिनिधित्व कर सकता है (2 राज्य)^(8 पद) = 256 अद्वितीय मूल्य। हालांकि, चूंकि हमारे पास 256 एएससीआई-प्रिंट करने योग्य पात्र नहीं हैं, इसलिए हम हेक्साडेसिमल जोड़े के रूप में बाइट्स का प्रतिनिधित्व करते हैं, क्योंकि हेक्साडेसिमल अंक 16 अलग-अलग मानों और 16 * 16 = 256 का प्रतिनिधित्व कर सकता है। इस प्रकार, हम पहले बाइट, 00000100
और ब्रेक ले सकते हैं यह दो हेक्साडेसिमल क्वाड में 0000 0100
के रूप में है। हेनिक्स में बाइनरी अनुवाद करना हमें 0x04
देता है। दूसरा बाइट छोटा है, 0000 0000
0x00
है। यह हमें दो बाइट स्ट्रिंग का हेक्साडेसिमल प्रतिनिधित्व देता है।
यह ध्यान देने योग्य है कि क्योंकि आप एक 2-बाइट (16-बिट) शीर्षक के लिए विवश कर रहे हैं, तो आप 11111111 11111111
की एक अधिकतम मूल्य, या 2^16 तक ही सीमित हैं लायक है - 1 = 65535
बाइट्स। इससे बड़ा कोई भी संदेश दो बाइट्स में इसकी लंबाई का सटीक रूप से प्रतिनिधित्व नहीं कर सकता है।
स्रोत
2012-12-10 04:14:06