2008-09-25 13 views
12

क्या कोई बता सकता है कि निम्न अनपैक के परिणाम का गणना क्यों की जाती है?रूबी में string.unpack कैसे काम करता है?

"aaa".unpack('h2H2')    #=> ["16", "61"] 

द्विआधारी में, 'एक' = 0110 0001 मुझे यकीन है कि कैसे 'h2' 16 (0001 0000) बन सकता है नहीं कर रहा हूँ या 'एच 2' 61 (0011 1101) बन सकता है।

उत्तर

9

नहीं 16 - यह 1 दिखा रहा है और फिर 6. एच प्रत्येक नींबू का हेक्स मान दे रहा है, इसलिए आपको 0110 (6), फिर 0001 (1) मिलता है, इस पर निर्भर करता है कि यह उच्च या निम्न बिट है या नहीं, फिर देख रहे हैं उच्च निबल पहले का उपयोग करें और आप 61 मिलता है, जो 97 के लिए हेक्स है - 'एक'

का मूल्य
6

चेक बाहर प्रोग्रामिंग खोल पर रूबी reference

str (जो बाइनरी डेटा हो सकता है) डीकोड प्रारूप स्ट्रिंग, प्रत्येक मान निकाले की एक सरणी लौटने के अनुसार: यहाँ एक टुकड़ा है। प्रारूप स्ट्रिंग एकल चरित्र निर्देशों के अनुक्रम, पेज 379. पर तालिका 22.8 में संक्षेप प्रत्येक निर्देश एक नंबर के बाद, कई बार संख्या का संकेत इस निर्देश के साथ दोहराने के लिए हो सकता है की होते हैं। एक तारांकन ("*") सभी शेष तत्वों का उपयोग करेगा। निर्देशों प्रत्येक निर्दिष्ट प्रकार के लिए अंतर्निहित प्लेटफ़ॉर्म के मूल आकार का उपयोग करना एक अंडरस्कोर ("_") द्वारा पालन किया जा सकता sSiIlL; अन्यथा, यह प्लेटफ़ॉर्म-स्वतंत्र संगत आकार का उपयोग करता है। स्ट्रिंग प्रारूप में रिक्त स्थान को अनदेखा किया जाता है। हर किरदार से

एच निकालें हेक्स निबल (सबसे महत्वपूर्ण पहले): पेज 286.

और अपने उदाहरण से प्रासंगिक पात्रों पर भी देखें सरणी # पैक।

हर किरदार से ज निकालें हेक्स निबल (कम से कम महत्वपूर्ण पहले)।

2

चार a की हेक्स कोड 61

खाका h2 है एक हेक्स स्ट्रिंग (कम nybble पहले), H2 के साथ उच्च निबल पहले ही है।

इसके अलावा perl documentation देखते हैं।

संबंधित मुद्दे