15 lines
482 B
Text
15 lines
482 B
Text
fcn toNBase(n,radix){
|
|
var [const] cs=[0..9].chain(["a".."z"]).pump(String); //"0123456789abcd..z"
|
|
_assert_(-37 < radix < -1,"invalid radix");
|
|
digits:=List();
|
|
while(n){ reg r;
|
|
n,r=n.divr(radix); // C compiler semantics
|
|
if(r<0){ n+=1; r-=radix; }
|
|
digits.append(r);
|
|
}
|
|
digits.reverse().pump(String,cs.get);
|
|
}
|
|
|
|
fcn toInt(str,radix){ // the toInt(radix) method radix is 2..36
|
|
str.reduce('wrap(s,d,rdx){ s*radix + d.toInt(rdx); },0,radix.abs());
|
|
}
|