Erlang 控制序列如何工作?

Erlang 控制序列如何工作?,erlang,Erlang,以下输出与我预期的一样: 125> [97, 98, 99]. "abc" 126> [97, 98, 0]. [97,98,0] 127> io:format("~s~n", [[97, 98, 0]]). ab^@ ok 但是使用~s的输出不是我所期望的: 125> [97, 98, 99]. "abc" 126> [97, 98, 0]. [97,98,0] 127> io:format("~s~n", [[97, 98, 0]]). ab

以下输出与我预期的一样:

125> [97, 98, 99].
"abc"

126> [97, 98, 0]. 
[97,98,0]
127> io:format("~s~n", [[97, 98, 0]]).
ab^@
ok
但是使用
~s
的输出不是我所期望的:

125> [97, 98, 99].
"abc"

126> [97, 98, 0]. 
[97,98,0]
127> io:format("~s~n", [[97, 98, 0]]).
ab^@
ok

如何解释该输出?

控制序列希望获得字符串、二进制或原子,并“使用字符串语法”打印它。由于Erlang字符串只是整数列表,因此在本例中,它尝试将
[97,98,0]
打印为字符串。另一方面,shell决定此整数列表是否为字符串

^@
表示NUL字符。您可能熟悉,其中,
^A
表示字节1,因为A是字母表中的第一个字母-或者换句话说,它表示值比字符的ASCII值小64的字节,因为A在ASCII中为65。将其外推到0字节,您将发现
@
,它是ASCII格式的64。

您可能熟悉插入符号,不。从没听说过。谢谢