2
A
回答
0
剛剛改寫由@Nibon給出的解決方案
pp(Str) -> pp(Str, []).
pp([],Acc) -> lists:flatten(lists:reverse(Acc));
pp([C|S], Acc) when C < 32; C>126 -> pp(S,[io_lib:format("<~2.16.0B>",[C]) | Acc]);
pp([C|S], Acc) -> pp(S,[C | Acc]).
1> pp:pp("abc\r\n").
"abc<0D><0A>"
0
我想你可以使用IO:格式
1>io:format("~w~n",["abc\r\n"]).
[97,98,99,13,10]
ok
2>
+0
不,我想 「ABC <0d><0a>」 – Bertaud 2011-01-12 22:08:36
1
pp(C) when C <32 ; C>126 ->
io_lib:format("<~2.16.0B>",[C]);
pp(C) ->
C.
1>lists:flatten(lists:map(fun pp/1,"abc\r\n")).
"abc<0D><0A>"
+0
請注意,如果您可以使用iolists,你應該使用它們出於效率的原因,並且省略`list:flatten/1`調用。 – ndim 2011-01-15 14:40:52
請注意,如果您可以使用iolists,則應出於效率原因使用它們,並省略`lists:flatten/1`調用。 – ndim 2011-01-15 14:40:26