二进制和 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 位