二进

二进制 属于 Elixir

7 个练习

关于 二进制

  • binary 类型是 bitstring 类型的一种特化。
  • binary 由字节组成。
    • 一个字节是 8 位。
    • 字节可以表示从 0 到 255 的数字。
    • 处理字节时,十六进制整数值很常见:0x00 到 0xFF。
  • binary 字面量使用 <<>> 特殊形式定义。
  • 可以使用 <>/2 来拼接 bitstring、binary 和字符串。
<<255>> == <<0xFF>>
# Overflowing bits are truncated
<<256>> == <<0>>
<<256::size(16)>> == <<1, 0>>

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

空字节 是 <<0>> 的另一个名字。

字符串是编码后的二进制数据

  • 字符串是以 UTF-8 格式编码的二进制数据。
    • 它们以 8 位(一个字节)为单位进行编码,最多使用 4 个字节来表示 255 以外的字符。
    • 字符串的长度可能与它的字节大小不同。
# 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>>

对二进制数据进行模式匹配

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

字符串也可以这样做:

# 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"}
通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 二进制

练习已锁定

再解锁 1 个练习即可练习 二进制