바이

바이너리 에서 Elixir

7개의 연습 문제

바이너리 소개

  • 바이너리 타입은 비트스트링 타입의 특수한 형태예요.
  • 바이너리는 바이트로 이루어져 있어요.
    • 바이트 하나는 8개의 비트예요.
    • 바이트는 0부터 255까지의 숫자를 나타낼 수 있어요.
    • 바이트를 다룰 때는 16진수 정숫값을 흔히 사용해요: 0x00부터 0xFF까지예요.
  • 바이너리 리터럴은 <<>> 특수 형식으로 정의해요.
  • <>/2는 비트스트링, 바이너리, 문자열을 이어 붙일 때 쓸 수 있어요.
<<255>> == <<0xFF>>
# Overflowing bits are truncated
<<256>> == <<0>>
<<256::size(16)>> == <<1, 0>>

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

_널 바이트_는 <<0>>의 또 다른 이름이에요.

문자열은 인코딩된 바이너리 데이터예요

  • 문자열은 UTF-8 형식으로 인코딩된 바이너리 데이터예요.
    • 8비트(1바이트) 단위로 인코딩되며, 255개가 넘는 문자를 나타낼 때는 최대 4바이트를 사용해요.
    • 문자열의 길이는 바이트 크기와 같지 않을 수 있어요.
# 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개를 더 잠금 해제해요