2015-12-21 97 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 
相关问题