由于 Elixir 字符串只是二进制文件,您可能可以使用 erlang :binary.decode_unsigned 函数将二进制数字转换为整数
来自文档
http://erlang.org/doc/man/binary.html#decode_unsigned-1
iex> :binary.decode_unsigned("hello")
448378203247
iex> :binary.encode_unsigned(448378203247)
"hello"
本质上,hello 的 ascii 值是
<<104, 101, 108, 108, 111>>
十进制转十六进制时可以写成
<<68, 65, 6C, 6C, 6F>>
或二进制形式
<01101000, 01100101, 01101100, 01101100, 01101111>
这是一系列存储为的字节
68656C6C6F 十六进制或
01101000_01100101_01101100_01101100_01101111 二进制
其十进制(base-10)值为448378203247
iex> Integer.to_string(448378203247, 16)
"68656C6C6F"
iex> Integer.to_string(448378203247, 2)
"110100001100101011011000110110001101111"
# each byte separated by _ is
# "1101000_01100101_01101100_01101100_01101111"
# missing a leading zero at the left, which doesn't change the value
编辑:添加二进制示例,
另外,两个十六进制数字可以用来完美地表示一个字节(编码 16 个值需要 4 位,0 到 15)
这就是为什么当我们用十六进制表示时,我们可以只连接十六进制值而不是当它们是十进制(base-10)表示法时
来自The wiki for hexadecimal
十六进制数字被计算机系统设计人员和程序员广泛使用,因为它们为二进制编码值提供了更人性化的表示。每个十六进制数字代表四个二进制数字,也称为半字节,即半个字节。例如,单个字节可以具有从 0000 0000 到 1111 1111 的二进制形式的值,可以更方便地表示为十六进制的 00 到 FF。