All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.twitter.bijection.NumberSystems.scala Maven / Gradle / Ivy

The newest version!
/**
Convert between popular number systems
Author: Krishnan Raman, [email protected]
*/

package com.twitter.bijection

object NumberSystems {
  case class BinaryString(get:String)
  case class HexString(get:String)
  case class OctalString(get:String)
  case class ArbitBaseString(get:String,base:Int)

  implicit val binary: Bijection[Int, BinaryString] = new AbstractBijection[Int, BinaryString] {
      def apply(num: Int) = BinaryString(Integer.toString(num,2))
      override def invert(s: BinaryString) = Integer.parseInt(s.get,2)
  }
  implicit val hexadecimal: Bijection[Int, HexString] = new AbstractBijection[Int, HexString] {
      def apply(num: Int) = HexString(Integer.toString(num,16))
      override def invert(s: HexString)  = Integer.parseInt(s.get,16)
  }
  implicit val octal: Bijection[Int, OctalString] = new AbstractBijection[Int, OctalString] {
      def apply(num: Int) = OctalString(Integer.toString(num,8))
      override def invert(s: OctalString) = Integer.parseInt(s.get,8)
  }
  // Can't be implicit due to the base parameter:
  def arbitbase(base:Int): Bijection[Int, ArbitBaseString] = new AbstractBijection[Int, ArbitBaseString] {
      def apply(num: Int) = ArbitBaseString(Integer.toString(num,base),base)
      override def invert(s: ArbitBaseString) = Integer.parseInt(s.get,s.base)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy