将十六进制字符串转换为整数

时间:2015-12-21 21:40:12

标签: elixir

我有一个十六进制值的数据包,我正在尝试处理。它们以字符串形式出现。例如,数据包的一部分是C0,即192。但是,我不太确定如何将字符串值转换为整数值。

如果我使用它:

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

......我得到了二进制文件。

我能想到提取这个整数值的唯一方法是:

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

这是有效的,看起来有点惯用,但我是Elixir的新手,并且不确定这是否是最好的解决方案。您如何将字符串十六进制值转换为Elixir中的整数?

2 个答案:

答案 0 :(得分:14)

您可以使用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"

答案 1 :(得分:7)

您可以通过:binary.decode_unsigned/1将二进制转换为它所代表的整数:

iex> 192 |> :binary.encode_unsigned |> Base.encode16
"C0"
iex> "C0" |> Base.decode16! |> :binary.decode_unsigned
192