Как я могу объединить цепочки битов, используя переменные?
Если у вас есть двоичные файлы, используйте Kernel.<>/2
:
iex|1 ▶ a = <<1, 2>>
#⇒ <<1, 2>>
iex|2 ▶ b = <<3, 4>>
#⇒ <<3, 4>>
iex|3 ▶ a <> b
#⇒ <<1, 2, 3, 4>>
Он также работает внутри Kernel.SpecialForms.<<>>/1
:
iex|4 ▶ << a <> <<3, 4>> >>
#⇒ <<1, 2, 3, 4>>
В качестве альтернативы вы можете явно указать компилятору, что вы используете бинарный файл:
iex|5 ▶ << a :: binary, <<3, 4>> >>
#⇒ <<1, 2, 3, 4>>
Если у вас есть цепочки битов, последний вариант работает: используйте явную подсказку типа:
iex|6 ▶ a = <<18::size(7)>>
iex|7 ▶ << a :: bitstring, <<100::size(7)>> >>
#⇒ <<37, 36::size(6)>>