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