Erlang 如何将ascii值列表(例如[192])转换为二进制<&书信电报;192>&燃气轮机;在二郎

Erlang 如何将ascii值列表(例如[192])转换为二进制<&书信电报;192>&燃气轮机;在二郎,erlang,Erlang,范例 6> erlang:list_to_binary([192]) 我希望输出为 有人能帮忙吗?这是因为Erlang将字符串表示为整数列表,因此如果您要求shell打印整数列表,shell会猜测您希望将其视为数字列表还是字符串。shell的猜测基于检查列表是否包含所有可打印字符,因此可以强制字符串不可打印。在Erlang/OTP R16B及更高版本中,可以使用函数在shell中关闭此行为: Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:

范例

6> erlang:list_to_binary([192])

我希望输出为


有人能帮忙吗?

这是因为Erlang将字符串表示为整数列表,因此如果您要求shell打印整数列表,shell会猜测您希望将其视为数字列表还是字符串。shell的猜测基于检查列表是否包含所有可打印字符,因此可以强制字符串不可打印。在Erlang/OTP R16B及更高版本中,可以使用函数在shell中关闭此行为:

Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

local recon loaded
Eshell V8.1  (abort with ^G)
1> erlang:list_to_binary([192]).
<<"À">>
2> shell:strings(false).
true
3> erlang:list_to_binary([192]).
<<192>>
4>
Erlang/OTP 19[erts-8.1][source][64位][smp:8:8][async threads:10][hipe][kernel poll:false][dtrace]
本地侦察机已装好
Eshell V8.1(使用^G中止)
1> erlang:list_to_binary([192])。
2> shell:strings(false)。
真的
3> erlang:list_to_binary([192])。
4>

注意:这是所有节点外壳的全局选项,因此对于寿命较长的节点,最好在完成后将其设置回原始值

之所以会出现这种情况,是因为Erlang将字符串表示为整数列表,因此如果您要求shell打印整数列表,shell会猜测您希望将其视为数字列表还是字符串。shell的猜测基于检查列表是否包含所有可打印字符,因此可以强制字符串不可打印。在Erlang/OTP R16B及更高版本中,可以使用函数在shell中关闭此行为:

Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

local recon loaded
Eshell V8.1  (abort with ^G)
1> erlang:list_to_binary([192]).
<<"À">>
2> shell:strings(false).
true
3> erlang:list_to_binary([192]).
<<192>>
4>
Erlang/OTP 19[erts-8.1][source][64位][smp:8:8][async threads:10][hipe][kernel poll:false][dtrace]
本地侦察机已装好
Eshell V8.1(使用^G中止)
1> erlang:list_to_binary([192])。
2> shell:strings(false)。
真的
3> erlang:list_to_binary([192])。
4>

注意:这是所有节点外壳的全局选项,因此对于寿命较长的节点,最好在完成后将其设置回原始值

将[1,2,3,4]等列表转换为:

列表:foldl(fun(N,Acc)->>end[1,2,3,4])。

将[1,2,3,4]等列表转换为:

列表:foldl(fun(N,Acc)->>end[1,2,3,4])。

它们实际上是一样的true,除非您的意思是只想更改它们在REPL中的打印方式。use shell:strings(false)。这在(底部附近)中提到。它们实际上是相同的
=.%=>true
,除非您的意思是只想更改它们在REPL中的打印方式。使用shell:strings(false)。这在(底部附近)中提到。不需要这样做——这与
列表到二进制/1
完全相同:
列表:foldl(fun(N,Acc)->end[192])。%=>。不需要这样做——这与
列表到二进制/1完全相同:
列表:foldl(fun(N,Acc)->end,[192])。%=>