In some weird way all the numbers over 8
, single, in a list becomes some kind of ASCII?
[8] -> ["\b"]
Please try to help me with this one :)
String is not a data type in Erlang, it's just a list of integers. But Erlang shell try to display lists as strings if possible:
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]
Print it with ~w
instead of ~p
, and your issue should go away.
~p
tries to interpret the elements in the list as ASCII. ~w
does not.
From documentation: http://www.erlang.org/doc/reference_manual/data_types.html
2.11 String
Strings are enclosed in double quotes ("), but is not a data type in Erlang. Instead a string "hello" is shorthand for the list [$h,$e,$l,$l,$o], that is [104,101,108,108,111].
Two adjacent string literals are concatenated into one. This is done at compile-time and does not incur any runtime overhead. Example:
"string" "42"
is equivalent to
"string42"
精彩评论