2015-12-21 9 views
6

में कनवर्ट करना मेरे पास हेक्साडेसिमल मानों का एक पैकेट है जिसे मैं सौदा करने का प्रयास कर रहा हूं। वे एक स्ट्रिंग के रूप में आते हैं। उदाहरण के लिए, पैकेट का एक टुकड़ा C0 है, जो 192 है। हालांकि, मुझे पूरा यकीन नहीं है कि स्ट्रिंग मान को पूर्णांक मान में कैसे अनुवादित किया जाए।हेक्साइडसिमल स्ट्रिंग को पूर्णांक

अगर मैं इस का उपयोग करें:

Base.decode16!("C0") 
# <<192>> 

... मैं एक द्विआधारी मिलता है।

एक ही तरीका है मुझे लगता है कि कर सकते हैं इस पूर्णांक मान निकालने के लिए इतना की तरह है:

<<x>> = Base.decode16!("C0") 
x 
# 192 

यह काम करता है, और यह एक तरह से मुहावरेदार लगता है, लेकिन मैं अमृत के लिए नया हूँ और अनिश्चित सा है कि अगर यह है सबसे अच्छा उपाय। एलीक्सिर में एक स्ट्रिंग हेक्स मान को पूर्णांक में अनुवाद करने के बारे में आप कैसे जाएंगे?

उत्तर

11

आप Integer

Integer.parse("C0", 16) # returns {192, ""} 

उपयोग कर सकते हैं इसे वापस बदलने के लिए आप उपयोग कर सकते

# to charlist 
Integer.to_charlist(192, 16) # returns 'C0' 

# to string 
Integer.to_string(192, 16) # returns "C0" 
+0

जब मैं ऐसा करें, मुझे यह त्रुटि मिलती है: "** (अपरिभाषित फ़ंक्शनरर) अपरिभाषित फ़ंक्शन: पूर्णांक .parse/2 " –

+0

हो सकता है कि आपके पास पुरानी इलीक्सिर संस्करण हो? मैंने इसे Elixir 1.1.1 के साथ परीक्षण किया और यह ठीक काम करता है। –

+0

हाँ, मैं 1.0.4 चला रहा हूं। मैं आगे बढ़ूंगा और अपग्रेड करूंगा। –

5

आप :binary.decode_unsigned/1 के माध्यम से पूर्णांक यह प्रतिनिधित्व करने के लिए एक द्विआधारी परिवर्तित कर सकते हैं:

iex> 192 |> :binary.encode_unsigned |> Base.encode16 
"C0" 
iex> "C0" |> Base.decode16! |> :binary.decode_unsigned 
192 
संबंधित मुद्दे