【问题标题】:How does the control sequence ~s work?控制序列 ~s 是如何工作的?
【发布时间】:2017-06-29 05:16:04
【问题描述】:

以下输出如我所料:

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

126> [97, 98, 0]. 
[97,98,0]

但是使用~s 的输出不是我所期望的:

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

我如何解释该输出?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    ~s 控制序列期望得到一个字符串、二进制文件或原子,并“使用字符串语法”打印它。由于 Erlang 字符串只是整数列表,因此在此示例中它也尝试将 [97, 98, 0] 打印为字符串。另一方面,shell tries to guess 这个整数列表是否应该是一个字符串。

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

    【讨论】:

    • 您可能熟悉插入符号, 不。从来没有听说过。谢谢。
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 2017-06-22
    • 2013-03-21
    • 2023-02-06
    • 2021-11-10
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多