在Elixir中将二进制字符串转换为十六进制,反之亦然

时间:2015-10-26 14:12:31

标签: string binary elixir hexdump

如何在Elixir中将二进制字符串转换为十六进制字符串,反之亦然?

关于其他“主流”语言的这个主题,有一些关于SO的帖子。甚至有SO post that benchmarks various C# implementations

我们如何在灵药中做到这一点?

我的实施太难看了,不能分享...... :(

2 个答案:

答案 0 :(得分:17)

Base.encode16/2

iex(1)> Base.encode16("foo")
"666F6F"

您也可以指定案例:

iex(2)> Base.encode16("foo", case: :lower)
"666f6f"

答案 1 :(得分:2)

我来这里是想在十六进制字符串和二进制数据(不是字符串)之间进行转换。可接受的答案是正确的,因为Elixir中的字符串是二进制文件,但是我发现答案以"foo"为例令人困惑。 Base.encode16/2 / Base.decode16!/2适用于所有二进制文件,其中字符串是子集。

十六进制为二进制:

Base.decode16!("0001FEFF")
=> <<0, 1, 254, 255>>

二进制到十六进制:

Base.encode16(<<0, 1, 255, 255>>)
=> "0001FFFF"

Base.encode16(<<0x66, 0x6F, 0x6F>>) # equivalent to "foo"
=> "666F6F"

Base.encode16("foo")
=> "666F6F"