Bi

Binários em Elixir

7 exercícios

Sobre Binários

  • O tipo binary é uma especialização do tipo bitstring.
  • Binários são compostos de bytes.
    • Bytes são 8 bits.
    • Bytes podem representar números de 0 a 255
    • Valores inteiros hexadecimais são comuns quando se trabalha com bytes: 0x00 a 0xFF.
  • Literais binários são definidos usando a forma especial <<>>.
    • Se você usar um inteiro maior que 255 para um byte, apenas os últimos 8 bits são usados, a menos que você especifique a unidade e/ou o tamanho a usar com o operador ::.
  • <>/2 pode ser usado para concatenar bitstrings/binários/strings.
<<255>> == <<0xFF>>
# Overflowing bits are truncated
<<256>> == <<0>>
<<256::size(16)>> == <<1, 0>>

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

Um byte nulo é outro nome para <<0>>.

Strings são dados binários codificados

  • Strings são dados binários codificados no formato UTF-8.
# 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>>

Correspondência de padrões em dados binários

  • É possível fazer correspondência de padrões com binários como um todo ou usar a forma especial para corresponder a apenas uma parte.
    • Apenas a última parte em uma correspondência de padrões pode ter tamanho variável.
# Ignore the first 8 bytes, bind the remaining variable sized binary to `body`
<<_::binary-size(8), body::binary>>

Isso também pode ser feito para 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"}
Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Binários

A prática está bloqueada

Desbloqueie mais 1 exercício para praticar Binários