Non-decimal radices/Convert: Difference between revisions

m
({{header|Liberty BASIC}})
Line 643:
END</lang>
<lang hicest>num=7836416410; txt=zzzzzzz; 7836416410;</lang>
 
=={{header|Icon}} and {{header|Unicon}}==
<lang Icon>procedure main()
every ( ns := "16r5a" | "-12r1a" ) &
( b := 8 | 12 | 16 ) do {
ns2 := convert(n := numeric(ns),b)
printf("ns=%s -> n=%d -> %s\n",ns,n,ns2)
}
end
 
link printf
 
procedure convert(i,b) #: convert i to base b
static digits
initial digits := &digits || &lcase
i := integer(i) | runerr(101, i)
/b := 10 | ( 2 < (b := integer(b)) <= *digits ) | runerr(205,b)
if b = 10 then return i
else {
p := (s := "", (i := -(0 > i),"-")|"") || b || "r"
until i = 0 & *s > 0 do
s ||:= digits[1 + 1( i % b, i /:= b)]
return p || reverse(s)
}
end</lang>
 
{{libheader|Icon Programming Library}}
[http://www.cs.arizona.edu/icon/library/src/procs/printf.icn printf.icn provides printf]
 
Output:<pre>ns=16r5a -> n=90 -> 8r132
ns=16r5a -> n=90 -> 12r76
ns=16r5a -> n=90 -> 16r5a
ns=-12r1a -> n=-22 -> -8r26
ns=-12r1a -> n=-22 -> -12r1a
ns=-12r1a -> n=-22 -> -16r16</pre>
 
=={{header|J}}==
Anonymous user