如何在Elixir中将二进制字符串转换为十六进制字符串,反之亦然?
关于其他“主流”语言的此主题,SO上有一些帖子。甚至有一个SO帖子比较各种C#实现的性能
我们如何在elixir中实现这个功能?
我的实现太丑陋了,无法分享... :(
如何在Elixir中将二进制字符串转换为十六进制字符串,反之亦然?
关于其他“主流”语言的此主题,SO上有一些帖子。甚至有一个SO帖子比较各种C#实现的性能
我们如何在elixir中实现这个功能?
我的实现太丑陋了,无法分享... :(
有一个Base.encode16/2函数:
iex(1)> Base.encode16("foo")
"666F6F"
您还可以指定大小写:
iex(2)> Base.encode16("foo", case: :lower)
"666f6f"
我来这里是想要在十六进制字符串和二进制数据(而不是字符串)之间进行转换。被接受的答案是正确的,因为 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"
inspect("test", base: :hex) == "<<0x74, 0x65, 0x73, 0x74>>"
也是一个很好的选择! - undefined