二进制字符串与普通列表的区别

时间:2015-05-05 14:52:05

标签: erlang

我是erlang的新手,在erlang shell中,我输入了以下表达式:

A= <<"abc">>.
B="abc".

我想知道AB之间的差异及其一般用法, 也就是为什么下面的表达不正确:

C=<<abc>>.

1 个答案:

答案 0 :(得分:10)

A= <<"abc">>是二进制文件。二进制是Erlang中的数据类型。位语法将二进制数据包含在&lt;&lt;&lt;和&gt;&gt;。在这种情况下,比特序列。所以这里的二进制是内存中的3,8位值97,98,99(十进制)。 Erlang在处理二进制数据方面非常强大。由于这是内置的,它非常有效,并且有许多函数可以处理二进制操作。

B="abc"是字符串表示。 Erlang中没有单独的数据类型字符串。 Erlang中的字符串只是具有一些语法糖的字符列表(列表作为引号内的文本)。 因此它与B=[$a,$b,$c].相同因此它是一个整数列表(至少32位+指向下一个的指针)在其他语言中每个字符8/16位的整数。虽然它可以处理unicode但它对大字符串的效果较差。

abc是一个原子,不能在二进制内部(除非转换)。所以C=<<abc>>.不正确。