Bi

Binaires en Elixir

7 exercices

À propos de Binaires

  • Le type binaire est une spécialisation du type bitstring.
  • Les binaires sont constitués d'octets.
    • Un octet est composé de 8 bits.
    • Un octet peut représenter des nombres allant de 0 à 255
    • Les valeurs entières en hexadécimal sont courantes lorsqu'on manipule des octets : 0x00 à 0xFF.
  • Les littéraux binaires se définissent à l'aide de la forme spéciale <<>>.
  • <>/2 permet de concaténer des bitstrings, des binaires ou des strings.
<<255>> == <<0xFF>>
# Overflowing bits are truncated
<<256>> == <<0>>
<<256::size(16)>> == <<1, 0>>

<<"Hello">> == <<72, 101, 108, 108, 111>>

Un octet nul est un autre nom pour <<0>>.

Les strings sont des données binaires encodées

  • Les strings sont des données binaires encodées au format UTF-8.
    • L'encodage se fait par blocs de 8 bits (un octet), et jusqu'à 4 octets sont utilisés pour représenter plus de 255 caractères.
    • La longueur d'un string peut ne pas être identique à sa taille en octets.
# This string has a string length of 5, but is made up of 7 bytes
string = "cześć"
String.length(string) != byte_size(string)

# Even emoji strings are encoded binaries
"👍" == <<240, 159, 145, 141>>

Le pattern matching sur les données binaires

  • On peut faire du pattern matching sur un binaire dans son ensemble, ou bien utiliser la forme spéciale pour n'en faire correspondre qu'une partie.
    • Seule la dernière partie d'un pattern matching peut avoir une taille variable.
# Ignore the first 8 bytes, bind the remaining variable sized binary to `body`
<<_::binary-size(8), body::binary>>

On peut également le faire avec des strings :

# bind the first 5 bytes to `name`,
# match the string literal " the ",
# bind remaining bytes to `species`
<<name::binary-size(5), " the ", species::binary>> = <<"Frank the Walrus">>
{name, species}
# => {"Frank", "Walrus"}
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Binaires

L'entraînement est verrouillé

Déverrouille 1 exercice de plus pour t'entraîner sur Binaires