Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Binaries

docs/elixir-exercism-05.livemd

Binaries

Binaries

Elixir fournit une syntaxe élégante pour travailler avec des données binaires comme nous l’avons vu avec la forme <<>> fournit pour travailler avec les [bitstrings][exercism-bitstrings].

Le type binary est une spécialisation du type bitstring. Alors que les bitstrings peuvent avoir n’importe quelle taille (en nombre de bits), les données de type binary ont un nombre de bits divisibles par 8. En utilisant le type binary, on pense en terme d’octets (bytes).
Un octet (byte) peut représenter un entier (integer) de 0 à 255. Il est habituel de représenter les octets en hexadécimal (0x00 - 0xFF).

Les littéraux de type binary sont définis avec la forme spéciale <<>>.
Pour définir un littéral de type binary on peut utiliser des entiers et de chaînes de caractère.

En cas d’overflow, seuls les 8 derniers bits des entiers plus grands que 255 seront utilisés.

On peut concaténer des données de type binary avec l’opérateur<>/2.

# Hexadecimal notation
<<255>> == <<0xFF>>
# Chaînes et entiers 
<<206, "abc">>
# Overflow
<<256>>
# Concatenating binaries
<<1>> <> <<256>> <> <<"a">>

Un octet null (null-byte) est un autre nom pour <<0>>.

Pattern matching avec le type binary

Le [Pattern matching][exercism-pattern-matching] peut-être utilisé de manière similaire qu’avec le type bitstring.

<> = <<"ab", "cd">>
IO.puts("h = #{h}, body = #{body}")
<> = <<1, 25, 255, "cd">>
IO.puts("f = #{inspect(f)}, rest = #{inspect(rest)}")