How to convert a number to any base in Scala

1 Answer

0 votes
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
  
*/

 

 



answered Feb 21 by avibootz
...