当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将十六进制字符串转换为整数》经验,为你挑选了2个好方法。

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

如果我用这个:

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

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

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

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

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



1> Dmitry Bilet..:

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


@ElliotLarson这是这样做的好方法,顺便说一句:)一定要查看`Integer.to_string/2`(而不是`to_char_list`),以及`String.to_integer/2`.

2> whatyouhide..:

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

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

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有