Binaries

The binary type represents a sequence of bits.

A binary literal looks like << term,… >>.

The simplest term is just a number from 0 to 255. The numbers are stored as successive bytes in the binary.

 iex>​ b = << 1, 2, 3 >>
 <<1, 2, 3>>
 iex>​ byte_size b
 3
 iex>​ bit_size b
 24

You can specify modifiers to set any term’s size (in bits). This is useful when working with binary formats such as media files and network packets.

 iex>​ b = << 1::size(2), 1::size(3) >> ​# 01 001
 <<9::size(5)>> # = 9 (base 10)
 iex>​ byte_size b
 1
 iex>​ bit_size b
 5

You can store integers, floats, and other binaries in binaries.

 iex>​ int = << 1 >>
 <<1>>
 iex>​ float = << 2.5 :: float >>
 <<64, 4, 0, 0, 0, 0, 0, 0>>
 iex>​ mix = << int ...

Get Programming Elixir ≥ 1.6 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.