Bi

Binaries in Elixir

7 Übungen

Über Binaries

  • Der Typ Binary ist eine Spezialisierung des Typs Bitstring.
  • Binaries bestehen aus Bytes.
    • Ein Byte besteht aus 8 Bits.
    • Bytes können Zahlen von 0 bis 255 darstellen
    • Hexadezimale Ganzzahlwerte sind beim Arbeiten mit Bytes üblich: 0x00 bis 0xFF.
  • Binäre Literale werden mit der speziellen Form <<>> definiert.
  • Mit <>/2 kannst du Bitstrings/Binaries/Strings verketten.
<<255>> == <<0xFF>>
# Overflowing bits are truncated
<<256>> == <<0>>
<<256::size(16)>> == <<1, 0>>

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

Ein Nullbyte ist ein anderer Name für <<0>>.

Strings sind kodierte Binärdaten

  • Strings sind kodierte Binärdaten im UTF-8-Format.
    • Sie werden in Blöcken von 8 Bit (einem Byte) kodiert und nutzen bis zu 4 Bytes, um mehr als 255 Zeichen darzustellen.
    • Die Länge eines Strings ist möglicherweise nicht mit seiner Bytegröße identisch.
# 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>>

Pattern Matching auf Binärdaten

# Ignore the first 8 bytes, bind the remaining variable sized binary to `body`
<<_::binary-size(8), body::binary>>

Das funktioniert auch mit 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"}
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Binaries

Das Üben ist gesperrt

Schalte 1 weitere Übung frei, um Binaries zu üben