如何让程序在 erlang 中保留 ASCII 值?
How to make program keep ASCII values in erlang?
我有一个从 erlang 输入的函数 shell:
huffman:table([$H,$E,$L,$L,$O]).
我想保留那样的 ASCII 值,但我的在输出中变成了整数。如何让程序不将它们解释为整数?
Erlang 不区分字符和整数。特别是,像 "HELLO"
这样的 Erlang 字符串文字会产生一个列表 [$H, $E, $L, $L, $O]
。 shell 通过试探法(基本上检查所有整数是否为可打印的 unicode 字符)决定它输出 [72, 69, 76, 76, 79]
还是 "HELLO"
。这是我的 shell 会话中的输出:
Erlang R16B03 (erts-5.10.4) [64-bit] [smp:4:4] [async-threads:10]
Eshell V5.10.4 (abort with ^G)
1> [$H,$E,$L,$L,$O].
"HELLO"
2>
如果您想将某些内容打印为字符串,请使用:
io:format("~s", [String]).
由于 $H
只是整数 72 的另一种写法,因此无法将其打印为 Erlang 内置的 $H
。您必须编写自己的函数才能以这种方式输出值。
在您显示的示例中,您似乎需要将小整数保留为整数,同时将字母值打印为字母。这样的事情可能会奏效:
maybe_char_to_string(N) when $A =< N, N =< $Z ->
[$$, N];
maybe_char_to_string(N) ->
integer_to_list(N).
这是它的输出:
3> foo:maybe_char_to_string($H).
"$H"
4> foo:maybe_char_to_string(1).
"1"
我有一个从 erlang 输入的函数 shell:
huffman:table([$H,$E,$L,$L,$O]).
我想保留那样的 ASCII 值,但我的在输出中变成了整数。如何让程序不将它们解释为整数?
Erlang 不区分字符和整数。特别是,像 "HELLO"
这样的 Erlang 字符串文字会产生一个列表 [$H, $E, $L, $L, $O]
。 shell 通过试探法(基本上检查所有整数是否为可打印的 unicode 字符)决定它输出 [72, 69, 76, 76, 79]
还是 "HELLO"
。这是我的 shell 会话中的输出:
Erlang R16B03 (erts-5.10.4) [64-bit] [smp:4:4] [async-threads:10] Eshell V5.10.4 (abort with ^G) 1> [$H,$E,$L,$L,$O]. "HELLO" 2>
如果您想将某些内容打印为字符串,请使用:
io:format("~s", [String]).
由于 $H
只是整数 72 的另一种写法,因此无法将其打印为 Erlang 内置的 $H
。您必须编写自己的函数才能以这种方式输出值。
在您显示的示例中,您似乎需要将小整数保留为整数,同时将字母值打印为字母。这样的事情可能会奏效:
maybe_char_to_string(N) when $A =< N, N =< $Z ->
[$$, N];
maybe_char_to_string(N) ->
integer_to_list(N).
这是它的输出:
3> foo:maybe_char_to_string($H).
"$H"
4> foo:maybe_char_to_string(1).
"1"