以某种奇怪的方式,所有超过8的数字,单个,在一个列表中变成某种ASCII码?
8
[8] -> ["\b"]
请试着帮助我解决这个问题:)
gzszwxb41#
String在Erlang中不是一种数据类型,它只是一个整数列表。但Erlang shell会尽可能将列表显示为字符串:
1> S = [65, 66, 67, 68, 69, 70]. "ABCDEF" 2> S = "ABCDEF". "ABCDEF" 3> io:write(S). [65,66,67,68,69,70]ok 4> [65, 66]. "AB" 5> [65, 66, 1]. [65,66,1]
tpxzln5u2#
用~w而不是~p打印它,您的问题应该会消失。~p尝试将列表中的元素解释为ASCII。~w则不会。
~w
~p
vc9ivgsu3#
来自文档:http://www.erlang.org/doc/reference_manual/data_types.html
字符串用双引号(")括起来,但不是Erlang中的数据类型。字符串" hello "是列表[$h,$e,$l,$l,$o]的简写,即[104,101,108,108,111]。两个相邻的字符串文字连接成一个。这是在编译时完成的,不会产生任何运行时开销。例如:"字符串""42"相当于"字符串42"
3条答案
按热度按时间gzszwxb41#
String在Erlang中不是一种数据类型,它只是一个整数列表。但Erlang shell会尽可能将列表显示为字符串:
tpxzln5u2#
用
~w
而不是~p
打印它,您的问题应该会消失。~p
尝试将列表中的元素解释为ASCII。~w
则不会。vc9ivgsu3#
来自文档:http://www.erlang.org/doc/reference_manual/data_types.html
2.11字符串
字符串用双引号(")括起来,但不是Erlang中的数据类型。字符串" hello "是列表[$h,$e,$l,$l,$o]的简写,即[104,101,108,108,111]。
两个相邻的字符串文字连接成一个。这是在编译时完成的,不会产生任何运行时开销。例如:
"字符串""42"
相当于
"字符串42"