elixir 的相同二进制模式匹配在命令行上有不同的表示

Same binary pattern match of elixir got different representations on command line

我是 Elixir 的新手,对下面第 15 行和第 17 行的两个不同输出感到困惑,即,一个是 98,另一个是 "b"(来自 offical document).

这两个匹配只是做同样的事情,因为(IMO)<<head, rest::binary>><<head::binary-size(1), rest::binary>> 相同。为什么他们的输出不同? (我知道它们在内部是一样的)

我正在使用 Windows OS 顺便说一句。

iex(14)> <<head, rest::binary>> = "banana"
"banana"
iex(15)> head
98
iex(16)> <<head::binary-size(1), rest::binary>> = "banana"
"banana"
iex(17)> head
"b"

element in bitstring 的默认类型是 integer,但是当您明确指定它作为 binary 进行模式匹配时,它将变为 binary

iex|1> <<head::integer, rest::binary>> = "banana"
iex|2> head
#⇒ 98
iex|3> <<head>>
#⇒ "b"