Les bitstrings permettent aux développeurs de travailler efficacement avec des données binaires.
Tu peux construire des bitstrings de façon élégante à l'aide de la forme spéciale <<>>.
<<0b101::3>> == <<5::3>> and <<5::3>> == <<5::size(3)>>
# => true
first = <<0b110::3>>
second = <<0b001::3>>
combined = <<first::bitstring, second::bitstring>>
# => <<49::size(6)>>
Tu peux utiliser une correspondance de motifs avec la forme <<>> et t'en servir pour décomposer plus finement des données binaires.
<<data_size::32, count::size(data_size)>> = <<8::32, 3::8>>
# => <<0, 0, 0, 8, 3>>
data_size
# => 8
count
# => 3
Tu peux faire une correspondance de motifs sur le reste du bitstring grâce à ::bitstring.
<<_::32, remainder::bitstring>> = <<8::32, 3::8>>
# => <<0, 0, 0, 8, 3>>
remainder
# => <<3>>
Le type de données binaires est un type particulier de bitstring dont le nombre de bits est divisible par 8.
Elixir propose du sucre syntaxique pour manipuler des littéraux entiers sous différentes formes :
0b1000001 = ?A = 65