Код ASCII не отображается - PullRequest
       4

Код ASCII не отображается

2 голосов
/ 12 января 2011

Я хотел бы написать функцию, которая преобразует «невидимый код ASCII» в видимую строку

пример:

abc \ r \ n станет abc <0d> <0a>

Каков наилучший подход?эта функция уже существует?

Ответы [ 3 ]

1 голос
/ 13 января 2011
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 голосов
/ 13 января 2011

Просто переписываем решение, данное @ 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 голосов
/ 12 января 2011

Полагаю, вы можете использовать io: format

1>io:format("~w~n",["abc\r\n"]).
[97,98,99,13,10]
ok
2>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...