In Erlang (since strings are lists of integers) you only need to go from ASCII-value to integer value by subtracting the ASCII value of '0'.
In its shortest form:
lists:map( fun(X) -> X-$0 end, "1234").
If you want a check for validity preventing conversion of non-base-10 characters and make it convenient to use:
Convert = fun(L) -> lists:map( fun(X) when is_integer(X), X>=$0, X=<$9 -> X-$0 end, L) end.
Use as:
74> Convert("10823472").
[1,0,8,2,3,4,7,2]
Now for something invalid:
75> Convert("aap").
=ERROR REPORT==== 8-Oct-2008::12:12:36 ===
Error in process with exit value: {function_clause,[{erl_eval,'-inside-a-shell-fun-',"a"},{erl_eval,expr,3}]}
** exited: {function_clause,[{erl_eval,'-inside-a-shell-fun-',"a"},
{erl_eval,expr,3}]} **
(if it fails, it fails big ;))