Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 为什么二进制字符串模式匹配生成的子字符串会转换为整数?_Elixir - Fatal编程技术网

Elixir 为什么二进制字符串模式匹配生成的子字符串会转换为整数?

Elixir 为什么二进制字符串模式匹配生成的子字符串会转换为整数?,elixir,Elixir,似乎源于模式匹配的二进制字符串的部分被转换为整数: iex(21)> <<type::size(8)>> = Base.decode16!("05") <<5>> iex(22)> type 5 iex(21)>=Base.decode16!("05") iex(22)>类型 5. 我希望type仍然是一个普通的二进制字符串,因为毕竟应用程序知道二进制表示什么类型的数据 我无法找到将子字符串保持为二进制字符串的方法。这是Erlang

似乎源于模式匹配的二进制字符串的部分被转换为整数:

iex(21)> <<type::size(8)>> = Base.decode16!("05")
<<5>>
iex(22)> type
5
iex(21)>=Base.decode16!("05")
iex(22)>类型
5.
我希望
type
仍然是一个普通的二进制字符串,因为毕竟应用程序知道二进制表示什么类型的数据


我无法找到将子字符串保持为二进制字符串的方法。这是Erlang实现的一个设计决定还是一个限制?

< P>我不认为这个行为令人惊讶,我甚至说这是意料之中的。我认为这是一个设计决定而不是实现限制。

当您意识到二进制是什么时,这是很自然的-在:

二进制文件只是一个字节序列

用于创建二进制文件的主要语法也显示了这一点:

<<97, 98, 99, 100>>

我不认为这种行为令人吃惊,我甚至说这是意料之中的事。我认为这是一个设计决定而不是实现限制。

当您意识到二进制是什么时,这是很自然的-在:

二进制文件只是一个字节序列

用于创建二进制文件的主要语法也显示了这一点:

<<97, 98, 99, 100>>
=Base.decode16!(“05”)
将以二进制字符串的形式提供
类型
,问题中的模式匹配是告诉VM以八位整数
=Base.decode16的形式返回
类型
!(“05”)
将以二进制字符串的形式提供
类型
,问题中的模式匹配是告诉VM以八位整数的形式返回
类型