object BaseConvert {
def toBase(n: Int, base: Int): String = {
val digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
require(base >= 2 && base <= 36, "Base must be between 2 and 36")
if (n == 0) return "0"
def loop(value: Int, acc: String): String = {
if (value == 0) acc
else {
val remainder = value % base
loop(value / base, digits(remainder).toString + acc)
// Alternatively: loop(value / base, s"${digits(remainder)}$acc")
}
}
loop(n, "")
}
def main(args: Array[String]): Unit = {
val number = 255
val bases = List(2, 8, 16, 36)
bases.foreach { b =>
println(s"$number in base $b = ${toBase(number, b)}")
}
}
}
/*
run:
255 in base 2 = 11111111
255 in base 8 = 377
255 in base 16 = FF
255 in base 36 = 73
*/