Процедуры перевода в указываемую систему счисления и из нее в десятичную, Icon и в этом деле великолепен.
procedure to_sys(x,n) local r,s,i,t,v,res s:=list() t:=list() while x<=1 do { r:=x%n put(s,r) x:=integer(x/n) } v:=&digits++&ucase every i:=*s to 1 by -1 do { put(t,v[s[i]+1]) } res:="" every i:=1 to *t do { res||:=t[i] } return res end procedure from_sys(x,n) local v,r,t,i r:=0 v:=&digits++&ucase x:=reverse(x) every i:=1 to *x do { if x[i]==!v then t:=find(x[i],v)-1 r+:=t*(n^(i-1)) } return r end