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

Hua*_*eng 3 erlang

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

A= <<"abc">>.
B="abc".
Run Code Online (Sandbox Code Playgroud)

我想知道之间的差异A,并B和他们一般使用,而且为什么下面的表达是不正确的:

C=<<abc>>.
Run Code Online (Sandbox Code Playgroud)

Vin*_*nod 12

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

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

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