Процедуры перевода в указываемую систему счисления и из нее в десятичную, 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