2015-12-21 61 views
6

我有一個十六進制值的數據包,我試圖處理。他們進來作爲一個字符串。例如,一個數據包是C0,這是192。但是,我不太清楚如何將字符串值轉換爲整數值。將十六進制字符串轉換爲整數

如果我用這個:

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

...我得到一個二進制文件。

我能想到的唯一方法提取該整數值是像這樣:

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

這工作,似乎有點習慣,但我是新來的藥劑和有點不確定,如果是這樣的最佳方案。你如何將字符串十六進制值轉換成Elixir中的整數?

回答

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

當我做到這一點,我得到這個錯誤:「**(UndefinedFunctionError)未定義的函數:整數.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 
相關問題