Reputation: 10866
How do you convert a binary string to a Hexadecimal String and vice-versa in Elixir?
There are a few posts on SO regarding this topic for other "main stream" languages. There's even an SO post that benchmarks various C# implementations
How do we do this in elixir?
My implementation was too ugly to share... :(
Upvotes: 21
Views: 15206
Reputation: 23091
I came here wanting to convert between hex strings and binary data (not strings). The accepted answer is correct, because strings in Elixir are binaries, but I found it confusing that the answer uses "foo"
as an example. Base.encode16/2
/ Base.decode16!/2
works for all binaries, of which strings are a subset.
Hex to binary:
Base.decode16!("0001FEFF")
=> <<0, 1, 254, 255>>
Binary to hex:
Base.encode16(<<0, 1, 255, 255>>)
=> "0001FFFF"
Base.encode16(<<0x66, 0x6F, 0x6F>>) # equivalent to "foo"
=> "666F6F"
Base.encode16("foo")
=> "666F6F"
Upvotes: 18
Reputation: 84150
There is Base.encode16/2:
iex(1)> Base.encode16("foo")
"666F6F"
You can also specify the case:
iex(2)> Base.encode16("foo", case: :lower)
"666f6f"
Upvotes: 28