二进制和 Bitstrings
elixir 中的二进制文件是使用 Kernel.SpecialForms 构造 << >> 创建的。
它们是一个强大的工具,使得 Elixir 对于使用二进制协议和编码非常有用。
二进制和位串是使用以逗号分隔的整数或变量值列表指定的,由“<<”和“>>”组成。它们由单元组成,可以是一组位或一组字节。默认分组是单个字节(8 位),使用整数指定:
<<222,173,190, 239>> # 0xDEADBEEF
Elixir 字符串也可以直接转换为二进制文件:
iex> <<0, "foo">>
<<0, 102, 111, 111>>
你可以为二进制文件的每个段添加说明符,允许你编码:
- 数据类型
- 尺寸
- 字节序
这些说明符通过使用“::”运算符跟随每个值或变量进行编码:
<<102::integer-native>>
<<102::native-integer>> # Same as above
<<102::unsigned-big-integer>>
<<102::unsigned-big-integer-size(8)>>
<<102::unsigned-big-integer-8>> # Same as above
<<102::8-integer-big-unsigned>>
<<-102::signed-little-float-64>> # -102 as a little-endian Float64
<<-102::native-little-float-64>> # -102 as a Float64 for the current machine
你可以使用的可用数据类型是:
- 整数
- 浮动
- bits(bitstring 的别名)
- 比特串
- 二进制
- bytes(二进制的别名)
- UTF8
- UTF16
- UTF32
请注意,在指定二进制段的大小时,它会根据段说明符中选择的类型而变化:
- 整数(默认)1 位
- 漂浮 1 位
- 二进制 8 位