Non-decimal radices/Convert: Difference between revisions
Content added Content deleted
({{header|Liberty BASIC}}) |
|||
Line 643: | Line 643: | ||
END</lang> |
END</lang> |
||
<lang hicest>num=7836416410; txt=zzzzzzz; 7836416410;</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}}== |
=={{header|J}}== |